欢迎访问宙启技术站
智能推送

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 通信。