in.ready()
не ожидает поступления каких-либо данных.Если сервер еще не отправил данные, когда ваш клиент читает эту строку, вы полностью пропустите readLine()
.
Просто удалите это while
и выполните простое readLine()
.
Если есть этапы, когда вам нужно ждать несколько строк с сервера, вам нужно будет реализовать больше логики.Обычно сервер отправляет маркер «конца сообщения», чтобы показать клиенту, что это сделано.Например, когда сервер готов, он может отправить сообщение «END-OF-MESSAGE».В коде клиента вы должны сделать:
boolean serverDone = false;
while (!serverDone) {
String message = in.readLine();
if (message == null) {
// handle this problem: the server has closed the connection
serverDone = true; // or return, or throw
} else if ("END-OF-MESSAGE".equals(message)) {
serverDone = true;
}
}