Переполнение стека тайм-аута сокета Windows TCP

у меня вопрос

Как узнать, что клиент не ответил на сервер в течение указанного времени ?!

Я использую многопоточность, а не функцию выбора.

Ваша помощь будет принята с благодарностью 🙂

Спасибо.

1

Решение

Вам необходимо изучить [установку опции сокета] [1] следующим образом:

setsockopt(sockid, SOL_SOCKET, SO_RCVTIMEO,(char *)&tv,sizeof(struct timeval));

Сделав это, вы можете проверить еще раз SOCKET_ERROR при вызове функций приема и / или отправки. Конкретный код ошибки можно получить, позвонив WSAGetLastError,

Это один из тех потенциальных кодов ошибок:

WSAEWOULDBLOCK
10035

Ресурс временно недоступен.

Эта ошибка возвращается из операций над неблокирующими сокетами, которые не могут быть завершены немедленно, например, recv, когда нет данных, поставленных в очередь для чтения из сокета. Это нефатальная ошибка, и операцию следует повторить позже. Обычно WSAEWOULDBLOCK сообщается как результат вызова connect через неблокирующий сокет SOCK_STREAM, поскольку для установления соединения должно пройти некоторое время.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]