прочитать конец ответа в 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(), и как их использовать в приведенном выше коде.


person shine_joseph    schedule 08.08.2016    source источник
comment
Посмотрите как определить конец потока ввода в java, и я думаю, вы решите свою проблему.   -  person Masked Man    schedule 08.08.2016


Ответы (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);
}
person Luca Ziegler    schedule 08.08.2016