Обнаружение мягкого соединения вблизи другой стороны (когда им удается отправить флаги FIN / RST) возможно только частично со старой библиотекой ввода / вывода Java. О нарушенном соединении вы узнаете только через тайм-аут, поэтому он может быть далек от немедленного. Ваши темы могут долго зависать, прежде чем они поймут, что вечеринка на другом конце давно прошла.
Чтобы справиться с этим лучше, вам нужно использовать nio
. Там такая ситуация будет распознаваться Selector
, говоря, что есть данные, готовые для чтения, но затем считанные по каналу, возвращающие меньше нуля. Это позволит вам почти сразу же узнать о перезагрузке программных соединений.
С другой стороны, завершение жесткого соединения (например, кто-то обрывает провод или отключение сети) может быть обнаружено только через тайм-ауты, независимо от того, какие библиотеки вы используете, так как это свойство самого протокола TCP.