Я пытаюсь запустить серверный сокет Java на удаленном хосте, который будет регулярно передавать сообщения (определяемые внешними процессами) всем подключенным клиентам.
Сокет сервера определяется как:
ServerSocket serverSocket = (ServerSocket) ((ServerSocketFactory)ServerSocketFactory.getDefault()).createServerSocket(3050);
while (true) {
Socket socket = serverSocket.accept();
remoteService.addSocket(socket);
}
Который будет отслеживать соединения сокетов в списке массивов. Метод ниже будет вызываться всякий раз, когда необходимо отправить широковещательную рассылку:
public void broadcastMessage(String message){
for (Socket socket : remoteService.getSockets()) {
System.out.println("Sending message: " + message);
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
printWriter.write(message);
}
}
На стороне клиента настройка выглядит следующим образом:
Socket socket = (Socket) ((SocketFactory) SocketFactory.getDefault()).createSocket(serverHost,portNum);
BufferedReader socketBufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (true) {
String message = socketBufferedReader.readLine();
if (message != null && message != "") {
System.out.println("Message received: " + message);
};
}
Сервер правильно печатает Строка «Отправка сообщения» столько раз, сколько подключено клиентов, но ни один из процессов клиента ничего не печатает. Любая идея, как заставить клиентов правильно слушать поток ввода сокета?