小编最近在研究Netty的底层是如何实现的,发现对于Socket编程的流程有些生疏了,因此特地的写了这边博客,来记录一下实现的流程,希望对大家有所帮助:
1、服务端监听端口:
try {
this.serverSocket = new ServerSocket(port);
System.out.println("服务端启动成功,端口:"+port);
}catch (Exception e){
System.out.println("服务端启动失败");
}
2、建立新的连接:
通过不断的去accept(),等待客户端去连接,如果这个时候客户端创建了新的连接,服务端就会拿到这个连接,然后扔给一个处理器,去处理每一个客户端的连接。
3、客户端写数据到服务端:
while (true){
try {
String message = "hello world";
System.out.println("客户端发送的数据:"+message);
socket.getOutputStream().write(message.getBytes());
}catch (Exception e){
System.out.println("数据写出出错!");
}
sleep();
}
4、做业务的逻辑处理
5、将处理完的数据发送给客户端
InputStream inputStream = socket.getInputStream();
while (true){
byte[] data = new byte[MAX_DATA_LEN];
int len;
while ((len = inputStream.read(data))!= -1){
String message = new String(data,0,len);
System.out.println("客户端传来的消息:"+message);
socket.getOutputStream().write(data);
}
}
小编认为对于socket的编程无非就是就是这五个点,服务端监听端口,客户端连接服务端监听的端口,客户端传数据给服务端,服务端将处理好的数据返回给客户端。