LINUX.ORG.RU

состояние клиента


0

0

Есть сокет, к нему подсоединен клиент. Как на С проверить в произвольный момент времени отсоединился ли клиент от сервера или еще TCP соединение установлено?

anonymous

А не проще в протокол обмена заложить возможность контрольного запроса
типа "проверка связи"?
Типа, сервер может в любой момент послать такой контрольный запрос клиенту и клиент обязан на него тут же вернуть квитанцию...

anonymous
()
Ответ на: комментарий от anonymous

Это, конечно, тоже выход из ситуации, но меня больше волнует тот случай, когда клиент корректно завершил соединение. При таком раскладе клиент же посылал серверу FIN или RST пакет и об этом же сервер знает! Хотелось бы узнать, как спросить у сокета: отсоединялся ли от него клиент или нет?

anonymous
()
Ответ на: комментарий от anonymous

По-моему когда одна из сторон закрывает соединение то сокет получает 0, но этого я точно не помню и глянуть сейчас негде. Да точно, если recv () == 0, то соединение потеряно. Еще это можно проверить (если я не ошибаюсь) при помощи fctl() - посмотри man fctl - вроде так она называется, она проверяет дескрипторы и все такое, может что найдешь

nil5
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.