у меня вопрос
Как узнать, что клиент не ответил на сервер в течение указанного времени ?!
Я использую многопоточность, а не функцию выбора.
Ваша помощь будет принята с благодарностью 🙂
Спасибо.
Вам необходимо изучить [установку опции сокета] [1] следующим образом:
setsockopt(sockid, SOL_SOCKET, SO_RCVTIMEO,(char *)&tv,sizeof(struct timeval));
Сделав это, вы можете проверить еще раз SOCKET_ERROR
при вызове функций приема и / или отправки. Конкретный код ошибки можно получить, позвонив WSAGetLastError
,
Это один из тех потенциальных кодов ошибок:
WSAEWOULDBLOCK
10035Ресурс временно недоступен.
Эта ошибка возвращается из операций над неблокирующими сокетами, которые не могут быть завершены немедленно, например, recv, когда нет данных, поставленных в очередь для чтения из сокета. Это нефатальная ошибка, и операцию следует повторить позже. Обычно WSAEWOULDBLOCK сообщается как результат вызова connect через неблокирующий сокет SOCK_STREAM, поскольку для установления соединения должно пройти некоторое время.
Других решений пока нет …