(Сокет Java-сервера) отправляет сообщение каждую минуту клиенту

Я пытаюсь сделать сервер (который позволяет несколько запросов клиентов) с использованием сокетов 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;
    }

}

Спасибо!

2 ответа

Я буду делать как это:)

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

}

Я предполагаю, что для этого будет полезен node.js. потому что для согласованного соединения и для обработки нескольких запросов одновременно node.js работает лучше, чем любой другой язык.

Другие вопросы по тегам