0

我正在尝试使用 java 套接字创建一个服务器(允许多个客户端请求)。我的问题是我想这样做,所以当客户端发送请求时,服务器每分钟回复一次服务器时间。而且我希望服务器每分钟永远给出时间,直到客户端停止请求进程(例如,使用“Ctrl+C”组合键在终端中停止进程)。这是我已经编写的代码,但我不确定如何实现“give-time-each-minute 循环”。更好的方法是什么?

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;
    }

}

谢谢!

4

1 回答 1

0

我会喜欢的:)

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);
long mainTime = System.currentTimeMillis()/1000;
while (true) {
    Socket socket = serverSocket.accept();
    OutputStream os = socket.getOutputStream();
    PrintWriter pw = new PrintWriter(os, true);

    if((System.currentTimeMillis()/1000-mainTime)%60>1)){
            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;
    }

}

于 2016-03-07T15:39:03.213 回答