Если клиент отключается корректно, вы получите 0-байтовое чтение из EndReceive
.Затем вы можете закрыть сокет.
Если соединение разорвано, вам понадобится способ его обнаружить.Вам необходимо отправить данные через сокет, чтобы определить, когда другая сторона отключилась.Это приведет к возникновению исключения при следующей операции с сокетом (например, EndReceive
), и вы сможете закрыть сокет.
У меня есть более подробное объяснение в моей записи блога ОбнаружениеПолуоткрытые (отброшенные) соединения .