网络通信程序设计:使用Java提供的Socket,建立客户端和服务器,编写程序,实现两者相互通信。
时间: 2024-04-10 18:28:40 浏览: 24
好的,我可以帮你解答这个问题。以下是一个简单的示例代码,展示了如何使用Java的Socket建立客户端和服务器,并实现两者之间的通信。
首先是服务器端的代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
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("服务器已启动,等待客户端连接...");
// 调用accept()方法监听客户端请求,等待连接
Socket clientSocket = serverSocket.accept();
System.out.println("客户端已连接:" + clientSocket.getInetAddress().getHostAddress());
// 获取输入流,用于接收客户端消息
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
// 获取输出流,用于向客户端发送消息
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String message;
while ((message = in.readLine()) != null) {
System.out.println("收到客户端消息:" + message);
out.println("服务器已接收到消息:" + message);
}
// 关闭资源
in.close();
out.close();
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
接下来是客户端的代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
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("localhost", 8888);
System.out.println("已连接服务器:" + socket.getInetAddress().getHostAddress());
// 获取输入流,用于接收服务器消息
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 获取输出流,用于向服务器发送消息
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 向服务器发送消息
out.println("Hello Server!");
// 接收服务器消息
String message = in.readLine();
System.out.println("收到服务器消息:" + message);
// 关闭资源
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
运行服务器端和客户端的代码后,你会发现它们之间进行了一次简单的通信。服务器端在控制台上显示收到的客户端消息,并将相同的消息发送回客户端。客户端在控制台上显示收到的服务器消息。
当然,你可以根据自己的需求进行扩展和修改这个示例代码。希望对你有所帮助!