У меня есть сервер, который сначала делает это: -
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
for (;;) {
String cmdLine = br.readLine();
if (cmdLine == null || cmdLine.length() == 0)
break;
...
}
позже он передает сокет другому классу "foo" Этот класс ожидает сообщений от приложения.
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
appCmd=br.readLine();
Мой клиент отправляет эту последовательность:
Проблема в том, что иногда" foo "не получает ответа. Он зависает в readLine ()
.
Какова вероятность того, что readLine ()
на сервере буферизует данные, используя упреждающее чтение, и класс "foo" получает голодал?
Если я добавлю засыпание на стороне клиента, все заработает. Но каков шанс, что он всегда будет работать?
sleep (1000);
Как решить проблему? Благодарим за любую помощь в этом отношении.