网络编程(2)TCP编程

Socket是网络编程的一个抽象概念,表示用一个Socket打开了一个网络链接,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定相应的协议类型即可。

大多数连接都是可靠的TCP连接。创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。举个例子,当我们在浏览器中访问新浪时,我们自己的计算机就是客户端,浏览器会主动向新浪的服务器发起连接。如果一切顺利,新浪的服务器接受了我们的连接,一个TCP连接就建立起来的,后面的通信就是发送网页内容了

/*
 *1、这里是客户端,用的类是Socket实现
 *2、和服务器实现数据交换
 *3、使用的方法:
 *Socket(String host,int port) 
 *构造方法只要运行,就会与服务器进行连接,连接失败就抛异常
 *OutputStream 输出流,将数据传到服务器
 *InputStream 输入流,从服务器读取数据
 *不用new出来,直接从Socket获得流对象,创建连接时就已经有了
 * */
public class Client {
    public static void main(String[] args) throws UnknownHostException, IOException {
        //创建Socket对象
        Socket socket=new Socket("127.0.0.1", 6666);
        //通过套接字方法,获取字节输出流,将数据写向服务器
        OutputStream outputStream=socket.getOutputStream();
        outputStream.write("服务器ok".getBytes());
        
        InputStream inputStream=socket.getInputStream();
        byte[]data=new byte[1024];
        int len=inputStream.read(data);
        System.out.println(new String(data,0,len));
        socket.close();
    }
    
}

*
 * 1、这里是服务器,使用的类是ServerSocket
 * 2、构造方法:ServerSocket(int port)
 * 3、服务器里面没有获取流的方法,服务器端需要获取客户端的套接字对象
 * accept(),获取客户端的套接字。服务器也需要获取一份
 * */
public class Server {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket=new ServerSocket(6666);
        //调用客户端套接字中的对象accept()获取客户端套接字对象
        Socket socket=serverSocket.accept();
        //获取字节输入流
        InputStream inputStream=socket.getInputStream();
        byte[]data=new  byte[1024];
        int len=inputStream.read(data);
        System.out.println(new String(data,0,len));

        //服务器想客户端回数据,字节输出流
        OutputStream out=socket.getOutputStream();
        out.write("已收到,谢谢!".getBytes());
        socket.close();
        serverSocket.close();
    }
}
 

猜你喜欢

转载自blog.csdn.net/formydream111/article/details/82466919