Приложение, над которым я работаю, состоит из двух частей.Серверная часть работает на компьютере с Linux.Клиентская часть, приложение Android, запрашивает сервер и получает необходимый ответ.Обе части написаны на Java, используют коммуникацию на основе сокетов и передают текстовые данные.
Сразу после отправки запроса клиент получает ответ следующим образом:
public static String ReadAvailableTextFromSocket(BufferedReader input) throws IOException {
if (input.ready() == false) {
return null;
}
StringBuilder retVal = new StringBuilder();
while(input.ready()) {
char ch = (char) input.read();
retVal.append(ch);
}
return retVal.toString();
}
Однакокажется, это не так уж и надежно.Ввод не всегда готов из-за времени отклика сервера или задержек передачи.
Похоже, что input.ready () - неправильный способ ожидания получения данных.
Мне интересно, есть лиэто лучший способ сделать это.Возможно, есть какая-то стандартная практика, которую я мог бы использовать.