Как читать данные из сокета подключения - Android - PullRequest
2 голосов
/ 15 октября 2010

У меня есть клиентское приложение TCP, которое успешно согласовывает соединение с сервером и получает буферизованный вывод, но мне нужно знать, как читать ответы сервера, не ожидая заполнения буфера или завершения соединения с сервером. В этом цикле:

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
   ...some code here...         
}

мое приложение просто зависает.
Как прочитать только одну строку или пустую строку, если буфер пуст и продолжает выполнять программу?
Можно ли тайм-аут этого чтения, чтобы дать серверу время для ответа?

1 Ответ

0 голосов
/ 15 октября 2010

Базовый протокол должен обеспечивать некоторую синхронизацию, такую ​​как HTTP Content-Length или \n\r.

В противном случае вы будете заблокированы, даже если ваша программа читает побайтно.

Или вы можете использовать неблокирующую розетку .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...