Читать конец ответа в Java readLine()
try {
input = new BufferedReader(new InputStreamReader(
mSocket.getInputStream()));
while (!Thread.currentThread().isInterrupted()) {
String messageStr = null;
messageStr = input.readLine();
if (messageStr != null) {
updateMessages(messageStr, false);
} else {
break;
}
}
input.close();
} catch (IOException e) {
Log.e(CLIENT_TAG, "Server loop error: ", e);
}
Я использую приведенный выше код в потоке для получения ответов от подключения к сокету.
В Android работает правильно, как я использовал out.println()
для отправки данных, но когда устройство подключено к ios и начинает получать данные, оно не может определить конец и принимается только тогда, когда соединение закрыто. Есть ли альтернативные методы, кроме readLine()
и как использовать в приведенном выше коде.
1 ответ
Решение
Это будет работать лучше.
try
{
input = new BufferedReader(new InputStreamReader(mSocket.getInputStream()));
String messageStr = "";
while (!Thread.currentThread().isInterrupted() && (messageStr = input.readLine()) != null)
{
updateMessages(messageStr, false);
}
input.close();
} catch (Exception e) {
Log.e(CLIENT_TAG, "Server loop error: ", e);
}