Работа с Socket. Клиент не принимает сообщения от сервера
У меня есть две отдельно запускаемые программы на языке Java. Первая программа представляет себя в роли сервера, а другая — в роли клиента.
Программа сервера отправляет сообщения клиенту каждую секунду.
// SERVER
public static void main(String[] args) throws IOException, InterruptedException {
ServerSocket serverSocket = new ServerSocket(7515);
Socket socket = serverSocket.accept();
System.out.println("We are connected!");
int k = 1;
while (true) {
PrintStream out = new PrintStream(socket.getOutputStream());
out.print("Hello! This is my " + k++ + " message from server.");
out.flush();
Thread.sleep(1000);
}
}
Вторая программа пытается принимать сообщения от сервера.
// CLIENT
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 7515);
while (true) {
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(reader.readLine());
}
}
Проблема в том, что клиент по каким-то причинам не получает сообщения от сервера, хотя сервер их отправляет, вызовом метода flush.
Что не так с кодом и как это исправить?
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Код на клиенте пытается прочитать строку: reader.readLine(), но сервер НЕ отправляет строку и сокет никогда не закрывается.
Нужно добавить перевод строки \n в коде сервера:
out.print("Hello! This is my " + k++ + " message from server.\n");
Похожий вопрос: flush() не работает, зато работает close()