Хотя должна быть возможность обнаружить, что сетевой кабель отключен на хосте, у вас все равно будет та же проблема, если сеть будет нарушена где-то еще между вашим сервером и клиентами.
Один общий (если не самый распространенный способ решить эту проблему - отправить сообщение «keep-alive».Если в течение некоторого времени не получено ответа на это сообщение, вы просто закрываете соединение и освобождаете все связанные с ним ресурсы.
Edit
Сообщение "keep-alive" похоже на использование "ping"msgstr "команда, чтобы увидеть, можно ли связаться с удалённым компьютером.Это просто сообщение, которое отправляется либо сервером, либо клиентом (не имеет значения, кто его инициирует), чтобы увидеть, если другой конец соединения активен и может быть достигнут.
Можеттак же просто, как отправить строку "Ты здесь?"и ожидая ответа, содержащего «Да, я есть».Если вы отправляете его раз в минуту и не получаете ответа, например, в течение одной минуты, вы можете считать, что соединение разорвано.Другой конец, который получает «Ты здесь?», Знает, что будет получать сообщение раз в минуту.Если он не прибыл в течение двух минут, то отправитель больше недоступен.
Если протокол не может быть изменен для добавления таких сообщений, посмотрите, можно ли использовать какое-то другое сообщение.
Кроме того, помните, что лучший и в некоторых случаях единственный способ узнать, если что-то не так с соединением, это попытаться прочитать из сокета.