正常下班,文章走起。在网络的通信的时候,都有听说过三次握手四次挥手。但是对其原理是否清晰?本篇文章通过使用wireshark对网络通信扑捉,进行原理分析。
1
BIO代码实现
//服务端代码
public class ServerSocket {
public static void main(String[] args) throws Exception {
//创建ServerSocket对象,用于客户端的连接
java.net.ServerSocket serverSocket = new java.net.ServerSocket(8989);
//定义输入流对象读取数据
byte[] bytes = new byte[1024];
try {
while (true) {
System.out.println("服务端发生阻塞,等待连接....");
//调用accept方法监听客户端,阻塞方法
Socket accept = serverSocket.accept();
//调用Socket对象的方法获取输入流对象
InputStream inputStream = ((Socket) accept).getInputStream();
System.out.println("服务端发生阻塞,等待接收数据....");
int read = inputStream.read(bytes);
System.out.println(new String(bytes, 0, read));
//关闭资源
accept.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (serverSocket != null && !serverSocket.isClosed()) {
serverSocket.close();
}
}
}
}
//客户端代码
public class ClientSocket {
public static void main(String[] args) throws Exception {
//创建Socket对象,与服务端Socket建立连接
Socket socket=new Socket("127.0.0.1",8989);
//获取输出流对象
OutputStream outputStream=socket.getOutputStream();
System.out.println("客户端阻塞,接收键盘输入....");
//接收键盘输入,模拟延迟消息发送
Scanner scanner