Мне кажется, что вы не можете получить ту функциональность, которую ожидаете от класса Socket. Насколько я понимаю, класс Socket знает только о состоянии подключения на момент последней операции с сокетом.
Обратите внимание, что метод Poll имеет некоторые ограничения:
Этот метод не может обнаружить некоторые виды проблем с подключением, таких как оборванный сетевой кабель или то, что удаленный хост был некорректно отключен. Вы должны попытаться отправить или получить данные, чтобы обнаружить ошибки такого рода.
Это будет означать, что в случае неблаговидного разъединения было бы нормально, чтобы сокет продолжал сообщать об истине до истечения времени ожидания последующей операции сокета (что может объяснить несколько минутную задержку, которую вы испытали в предыдущем посте по этому вопросу. ).
Это означает, что если вы хотите обнаружить неблаговидные разъединения, вам, вероятно, потребуется реализовать пульс / пинг на уровне приложения, как предложено в предыдущем ответе . Возможно, вам придется поиграть с интервалом между эхо-запросами, иначе вы потеряете степень отказоустойчивости, а скачок задержки может привести к нежелательным сообщениям об отключении.