Java网络编程:如何使用函数实现TCP/IP通信
发布时间:2023-05-22 06:26:28
TCP/IP协议是构成Internet的基础,它分为两层,即TCP层和IP层。TCP(Transmission Control Protocol)层负责数据的传输和管理,保证数据完整性,IP(Internet Protocol)层负责处理数据报文,缺乏完整性保证。
Java 提供了一套完整的网络编程库,我们可以很方便地使用函数实现 TCP/IP 通信。
1.建立服务器和客户端
服务器端通过ServerSocket类来建立,如下示例:
ServerSocket server = new ServerSocket(8888);//建立服务器监听端口
while(true){
System.out.println("等待客户端连接……");
Socket socket = server.accept();//阻塞等待客户端连接
System.out.println("客户端"+socket.getInetAddress().getHostName()+"连接成功!");
}
客户端通过Socket类来建立,如下示例:
Socket client = new Socket("127.0.0.1",8888);//连接本机服务器8888端口
InputStream inputStream = client.getInputStream();//获取socket输入流
OutputStream outputStream = client.getOutputStream();//获取socket输出流
2.发送和接收数据
通过输入输出流,可以实现数据的收发。我们可以使用 BufferedReader 和 BufferedWriter 来实现文本的发送和接收。
对于服务器端:
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));//获取输入流
PrintWriter writer = new PrintWriter(socket.getOutputStream(),true);//获取输出流
String str;
while((str = reader.readLine())!=null){//阻塞读取客户端发来的消息
System.out.println("接收到:"+str);
}
对于客户端:
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));//获取输入流
PrintWriter writer = new PrintWriter(outputStream,true);//获取输出流
writer.println("Hello server");//向服务器发送消息
String response = reader.readLine();//阻塞等待服务器的响应消息
System.out.println("服务器响应:"+response);
3.关闭客户端和服务器
当客户端和服务器之间通讯完成后,应该关闭客户端和服务器套接字。对于服务器端和客户端,都是通过socket.close()来关闭套接字。
对于服务器端:
socket.close();//关闭客户端套接字
对于客户端:
client.close();//关闭客户端套接字
总结:
TCP/IP协议是网络编程的基础,Java提供了完整的库来进行网络编程。通过建立服务器和客户端,使用输入输出流来收发数据,最后使用socket.close()来关闭套接字,就可以简单地实现 TCP/IP 通信。
