Socket通信的流程是怎样的?

Socket通信的流程一般包括以下几步:

  1. 创建ServerSocket,监听客户端连接。
ServerSocket serverSocket = new ServerSocket(port);
  1. 客户端创建Socket对象,连接服务器。
Socket socket = new Socket(ip, port); 
  1. 服务器端通过accept()方法获取Socket对象,建立连接。
Socket socket = serverSocket.accept();
  1. 一旦连接建立,服务器端和客户端通过输入和输出流通信。
// 服务器端
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();

// 客户端  
InputStream inputStream = socket.getInputStream();  
OutputStream outputStream = socket.getOutputStream();
  1. 通信结束,关闭资源。
// 服务器端
socket.close();
serverSocket.close();

// 客户端
socket.close(); 

完整的Java代码示例:
服务器端:

ServerSocket serverSocket = new ServerSocket(9999);
while(true) {
    Socket socket = serverSocket.accept();
    InputStream in = socket.getInputStream();
    byte[] b = new byte[1024];
    int len = in.read(b);
    String content = new String(b, 0, len);
    System.out.println(content);
    OutputStream out = socket.getOutputStream();
    out.write("接收成功".getBytes());
    socket.close();
}
serverSocket.close();

客户端:

Socket socket = new Socket("127.0.0.1", 9999);  
OutputStream out = socket.getOutputStream();  
out.write("Hello Server".getBytes());  
InputStream in = socket.getInputStream();
byte[] b = new byte[1024];
int len = in.read(b);
String content = new String(b, 0, len);
System.out.println(content);  
socket.close();

所以,Socket通信的流程大致可以归纳为:

  1. 创建ServerSocket,监听端口。
  2. 客户端创建Socket,连接服务器。
  3. 服务器调用accept()获取Socket,建立连接。
  4. 双方通过输入输出流进行通信。
  5. 关闭Socket和ServerSocket。