请使用Socket类、ServerSocket类等编写一个套接字程序。服务器端提供报时服务:当客户端发送出“几点了?”,服务器端向客户端返回“15:40”;若客户端发送“今天是几号?”,服务器端向客户端返回“5月22日”;若客户端发送“今天是星期几?”,服务器端向客户端返回“星期一”;客户端收到数据后将在命令行窗口中显示收到的时间信息;当客户端发送“再见”时,则服务器端结束对该客户端的服务;服务器端可以同时与多个客户端建立连接,并为它们提供报时服务。java
时间: 2023-09-06 19:14:33 浏览: 97
大多数程序员所接触到的套接字(Socket)为两类:
好的,以下是一个简单的Java网络编程聊天室的示例代码。代码实现了一个服务器端和多个客户端之间的通信,客户端可以向服务器发送几个不同的命令获取时间信息,服务器会根据不同的命令返回不同的时间信息。当客户端发送“再见”时,服务器会结束对该客户端的服务。
服务器端代码:
```
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8000);
System.out.println("服务器已启动,等待客户端连接...");
while (true) {
Socket socket = serverSocket.accept();
System.out.println("客户端已连接,地址为:" + socket.getInetAddress() + ":" + socket.getPort());
// 创建输入流和输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
// 读取客户端发送的数据
String line;
while ((line = in.readLine()) != null) {
System.out.println("客户端发送了命令:" + line);
switch (line) {
case "几点了?":
out.println(new java.util.Date());
break;
case "今天是几号?":
out.println(new java.util.Date().getDate() + "日");
break;
case "今天是星期几?":
out.println(getWeek(new java.util.Date()));
break;
case "再见":
out.println("再见!");
socket.close();
break;
default:
out.println("未知命令!");
break;
}
}
}
}
// 根据日期获取星期几
private static String getWeek(java.util.Date date) {
String[] weeks = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
int week = date.getDay();
return weeks[week];
}
}
```
客户端代码:
```
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8000);
System.out.println("连接服务器成功!");
// 创建输入流和输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
// 向服务器发送命令
out.println("几点了?");
System.out.println(in.readLine());
out.println("今天是几号?");
System.out.println(in.readLine());
out.println("今天是星期几?");
System.out.println(in.readLine());
out.println("再见");
System.out.println(in.readLine());
socket.close();
}
}
```
运行服务器端代码后,再运行多个客户端代码,即可实现多个客户端和服务器之间的通信。
阅读全文