用java语言创建服务器端程序,监听在8888端口,当客户端程序发出请求字符串:getdatetime时,返回当前服务器端机器的时间,格式为:yyyy-MM-dd HH:mm:ss
时间: 2023-06-01 14:02:06 浏览: 364
下面是一个简单的Java程序,可以实现上述功能:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started");
while (true) {
Socket socket = serverSocket.accept();
System.out.println("Client connected");
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
String request = reader.readLine();
System.out.println("Received request: " + request);
if (request.equals("getdatetime")) {
String datetime = getDateTime();
writer.println(datetime);
System.out.println("Sent response: " + datetime);
} else {
writer.println("Invalid request");
System.out.println("Sent response: Invalid request");
}
writer.flush();
socket.close();
System.out.println("Client disconnected");
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static String getDateTime() {
return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date());
}
}
```
该程序通过创建一个ServerSocket对象并指定端口号来监听客户端的连接请求。当有客户端连接时,程序会创建一个对应的Socket对象,并通过该对象的输入/输出流来读取客户端发送的请求和发送响应。当请求字符串为getdatetime时,程序会调用getDateTime方法获取当前时间,并将其发送给客户端。否则,程序会发送一个“Invalid request”的响应。
注意,在实际应用中,为了避免多个客户端同时连接导致的线程安全问题,应该使用多线程来处理客户端请求。此外,还应该对输入/输出流进行缓冲以提高性能。
阅读全文