ObjectOutputStream IOException / тайм-аут на Android - PullRequest
0 голосов
/ 27 апреля 2011

Я занимаюсь разработкой приложения для Android в реальном времени, и у меня возникла проблема с обнаружением ошибок в ObjectOutputStream, который подключен к TCP сети Socket. Я звоню writeObject, за которым следует flush в потоке, как обычно, однако, когда принимающий узел неожиданно умирает, мне нужно знать об этом сразу (в течение нескольких секунд). К сожалению, когда узел переходит на вызов сервера к writeObject и flush, не выбрасывает IOException с и вместо этого успешно.

Я предполагаю, что с этими вызовами происходит внутренняя буферизация, и в чем причина ее успеха? Есть ли какой-нибудь способ узнать, когда узел не работает с помощью writeObject или другими способами после успешного создания Socket?

Стоит отметить, что TCP Socket оставлен открытым по соображениям производительности, поэтому установка таймаута на connect для каждого writeObject невозможна.

1 Ответ

0 голосов
/ 27 апреля 2011

когда приемный узел неожиданно умирает, мне нужно знать об этом сразу (в течение нескольких секунд)TCP не говорит вам.Это не знает.Он занят буферизацией и повторной попыткой.Время будет истекло, и если вы сделаете запись после этого, вы получите исключение.Нет никакого контроля над тем, сколько времени это займет.

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