用Java 实现一个客户端和服务器通信的功能,要求客户端与服务器之间至少有三次通信。
时间: 2023-10-04 15:13:52 浏览: 31
好的,我来回答你的问题。
首先,需要明确的是,Java提供了Socket和ServerSocket类,可以实现客户端和服务器之间的通信。
下面是一个简单的示例代码,实现了一个客户端向服务器发送消息,服务器接收消息并回复消息,客户端再次接收消息的功能,这样就实现了至少三次通信:
客户端代码:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
try {
// 创建Socket对象,指定服务器的IP地址和端口号
Socket socket = new Socket("127.0.0.1", 8888);
// 获取输出流,向服务器发送消息
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("Hello Server!");
out.flush();
// 获取输入流,接收服务器的消息
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String serverMsg = in.readLine();
System.out.println("Server: " + serverMsg);
// 再次获取输入流,接收服务器的消息
serverMsg = in.readLine();
System.out.println("Server: " + serverMsg);
// 关闭资源
in.close();
out.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
服务器代码:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,指定监听的端口号
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started...");
// 监听客户端的连接请求
Socket socket = serverSocket.accept();
System.out.println("Client connected...");
// 获取输入流,接收客户端的消息
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String clientMsg = in.readLine();
System.out.println("Client: " + clientMsg);
// 获取输出流,向客户端发送消息
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.println("Hello Client!");
out.flush();
// 再次向客户端发送消息
out.println("How are you?");
out.flush();
// 关闭资源
in.close();
out.close();
socket.close();
serverSocket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在这个示例中,客户端和服务器之间的通信包括以下步骤:
1. 客户端连接到服务器,发送消息“Hello Server!”。
2. 服务器接收到消息,发送消息“Hello Client!”给客户端。
3. 服务器再次发送消息“How are you?”给客户端。
4. 客户端接收到服务器的两条消息并输出。
这样就实现了至少三次通信的功能。