Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Socket: Как удостовериться что связь в норме?

16.03.17 20:47
Socket: Как удостовериться что связь в норме?
 
anly коренной житель
anly
Последний раз изменено 16.03.17 20:47 (anly)

задача на Сокетах в СИшарпе в режиме тсп-айпи и неблокируемом режиме.

Касается функций и свойств класса Socket: Listen, Accept, Connect, Receive, Send, Connected, Poll.


Есть сокет-сервер, который запускает Listen, а потом периодически Accept, пока не поймает сокeта-клиента, который вызвал Connect.

Итак связь установилась. Причем сервер работает только с одним клиентом, других (после того как с первого акцептировал, игнорирует).

Теперь сервер и клиент могут посылать друг другу сообщения , и принимать друг от друга. И вот например клиент отрубился (было вызвано Close), а потом опять хочет подконнектиться, но сервер его отбрасывает, пребывая в заблуждении что все еще на связи. Сервер просто периодически вызывает Receive, но понятно что данные не идут, а это нормально - клиент не шлёт, видимо потому что не надо.


Вопрос: как серверу узнать что связи уже нет? Ведь свойство Connected сокета полученного от Accept, всё еще возвращает True (проверенно дебагером). (Connected возвратит False, только после попытки Send, но это делать, только ради проверки связи, как-то некрасиво).


Как удостовериться что связь в норме? (без Send).

Проклят нарушающий межи ближнего своего (Втор.27:17)
 

Перейти на