【发布时间】:2016-03-07 15:08:42
【问题描述】:
我正在尝试使用 java 套接字创建一个服务器(允许多个客户端请求)。我的问题是我想这样做,所以当客户端发送请求时,服务器每分钟回复一次服务器时间。我希望服务器每分钟永远给出时间,直到客户端停止请求进程(例如,使用“Ctrl+C”组合键在终端中停止进程)。这是我已经编写的代码,但我不确定如何实现“给定时间每分钟循环”。有什么更好的方法?
public class Server {
public static void main(String args[]) throws IOException {
final int portNumber = Integer.parseInt(args[0]);
System.out.println("Initializing server socket at port" + portNumber);
ServerSocket serverSocket = new ServerSocket(portNumber);
while (true) {
Socket socket = serverSocket.accept();
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os, true);
// Here I want to introduce code to give the client the current
// server time once each minute.
// String time = getTime();
// pw.println("Current server time is: " + time);
// ...
pw.close();
socket.close();
}
}
public String getTime(){
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
String stringTime = sdf.format(date);
return stringTime;
}
}
谢谢!
【问题讨论】:
-
也许是
Thread.sleep()。恕我直言,如果你想每分钟发送一些东西,让客户端每分钟询问一次会更容易,它会阻止你维护一个打开的套接字。 -
我想 node.js 会对此有所帮助。因为对于一致的连接和一次处理多个请求,node.js 比任何其他语言都更好。
标签: java sockets server client periodicity