网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为Socket,另一端称为ServerSocket。socket也称为套接字。Java中有两种类型的socket:①面向连接的socket通信协议(TCP协议,Transmission Contral Protocol 传输控制协议)②面向无连接的socket通信协议(UDP协议,User Datagram Protocol 用户数据报协议)。任何一个socket都是由IP地址和端口号唯一确定的。
基于TCP的通信过程如下:
首先,Server端Listen指定的某个端口是否有连接请求;其次,Client端向Server端发出Connect请求;最后,Server端向Client端发出Accept消息。这样就建立一个连接,会话随机产生。双方都可以通过Send和Write等方法与对方通信。
Socket的生命周期分3个阶段:打开Socket、使用Socket收发数据和关闭Socket。
一、服务端核心代码
获取server 指定监控的端口号
ServerSocket server = new ServerSocket(2000);
Socket socket = server.accept();//阻塞式等待连接
//连接成功后获取输入流
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//获取输出流
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
//获取接受的数据
br.readLine();
//发送数据到客户端
pw.println("hello client");
//使用完关闭流资源
二、客户端核心代码
Socket socket = new Socket("localhost", 2000);
获取输入流
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//获取输出流
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
//获取接受的数据
br.readLine();
//发送数据到服务端
pw.println("hello server");
//使用完关闭流资源