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