Socket通信的流程一般包括以下几步:
- 创建ServerSocket,监听客户端连接。
ServerSocket serverSocket = new ServerSocket(port);
- 客户端创建Socket对象,连接服务器。
Socket socket = new Socket(ip, port);
- 服务器端通过accept()方法获取Socket对象,建立连接。
Socket socket = serverSocket.accept();
- 一旦连接建立,服务器端和客户端通过输入和输出流通信。
// 服务器端
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
// 客户端
InputStream inputStream = socket.getInputStream();
OutputStream outputStream = socket.getOutputStream();
- 通信结束,关闭资源。
// 服务器端
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通信的流程大致可以归纳为:
- 创建ServerSocket,监听端口。
- 客户端创建Socket,连接服务器。
- 服务器调用accept()获取Socket,建立连接。
- 双方通过输入输出流进行通信。
- 关闭Socket和ServerSocket。