@sk1nny_puppy

Что делать при EOFException во время чтения из потока сокета на android?

В android приложении есть класс, который постоянно читает что-то из ssl socket. Чтение сделано в отдельном потоке через DataInputStream.readFully.

Время от времени при чтении выбрасывается EOFException, при этом сам сокет говорит isConnected() == true и isClosed() == false.

Как правильно обрабатывать эти исключения?

Пример кода, чтобы было понятнее о чем идет речь:
byte[] buf = new byte[1]{};
try {
    inputStream = new DataInputStream(s.getInputStream());
    while (!Thread.currentThread().isInterrupted()  && s.isConnected()) {
        inputStream.readFully(buf); // вот здесь кидается исключение
        // какая-то обработка этого всего
    }
}  catch (IOException e) {
    Log.e(LOG_TAG, "exception while reading: " + e);
    e.printStackTrace();
}
  • Вопрос задан
  • 2894 просмотра
Решения вопроса 1
@sk1nny_puppy Автор вопроса
На SO все склоняются к тому, что это происходит потому, что сервер рвет соединение, и, соответственно, обрабатывать это исключение нужно переподключением к серверу.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы