(Сокет 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 работает лучше, чем любой другой язык.