Читать конец ответа в 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);
}
Другие вопросы по тегам