利用Socket类和ServerSocket类编写一个C/S程序,实现C/S通信。 客户端向服务器端发送请求给服务端,形式如“From 学号 姓名: what time is it ”;服务器端接受到该字符串后将服务器端当前时间返回给客户端,形式如
时间: 2024-03-02 21:52:32 浏览: 70
Java聊天室的设计与实现,毕业设计,毕业论文,项目辅导视频,源代码
好的,以下是 Java 的代码实现:
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待客户端连接...");
while (true) {
Socket socket = serverSocket.accept();
System.out.println("客户端已连接,IP地址为:" + socket.getInetAddress().getHostAddress());
// 获取输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 获取输出流
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
String line;
while ((line = reader.readLine()) != null) {
if (line.equals("exit")) {
// 客户端发送 "exit" 命令,服务器端返回 "Bye" 并退出
writer.println("To " + socket.getInetAddress().getHostName() + ": Bye");
break;
} else {
// 处理客户端发送的请求
String[] parts = line.split(":");
String name = parts[0].substring(parts[0].indexOf(" ") + 1);
String request = parts[1].trim();
if (request.equals("what time is it")) {
// 获取当前时间并返回给客户端
String time = new java.util.Date().toString();
writer.println("To " + name + ": " + time);
} else {
writer.println("To " + name + ": Invalid request");
}
}
}
// 关闭输入流、输出流和Socket
reader.close();
writer.close();
socket.close();
}
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8888);
// 获取输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 获取输出流
PrintWriter writer = new PrintWriter(socket.getOutputStream(), true);
// 向服务器发送请求
String name = "学号 姓名";
writer.println("From " + name + ": what time is it");
String response = reader.readLine();
System.out.println(response);
// 发送 "exit" 命令并接收服务器返回的 "Bye"
writer.println("From " + name + ": exit");
response = reader.readLine();
System.out.println(response);
// 关闭输入流、输出流和Socket
reader.close();
writer.close();
socket.close();
}
}
```
注意,代码中的 `学号 姓名` 部分需要替换成你自己的学号和姓名。另外,本例中客户端和服务器端均运行在本地,如果需要在不同的机器上运行,需要将客户端代码中的 `localhost` 修改成服务器端的 IP 地址。
阅读全文