WSAGetLastError возвращает ноль - PullRequest
5 голосов
/ 11 февраля 2011

Я вызываю ConnectEx() метод. Возвращает значение FALSE, поэтому я проверяю код ошибки с помощью вызова WSAGetLastError. Иногда бывает, что возвращаемое значение равно нулю. Что это значит?

Ответы [ 3 ]

4 голосов
/ 23 июля 2013

WSAGetLastError должен быть немедленно вызван при возникновении ошибки. Некоторые функции могут сбрасывать последний расширенный код ошибки на 0

Больше информации на MSDN .

1 голос
/ 18 февраля 2011

Нет кода ошибки Winsock со значением 0, поэтому я думаю, что вы не вызывали WSAStartup.

0 голосов
/ 06 октября 2017

Функция winsock recv может возвращать ошибку (SOCKET_ERROR), а затем, даже если следующий вызов WSAGetLastError следующий, она все равно может возвращать 0 как код ошибки.

Впервые я обнаружил эту «ошибку»,переключение из режима отладки в режим выпуска.Мой код работал нормально при отладке, но отключал клиентов в режиме выпуска.

Причина этого в том, что буфер приема был недостаточно велик.Но это нигде не задокументировано.В моем случае режим релиза сделал все достаточно быстро, чтобы переполнить буфер.

Простое увеличение размера буфера решит проблему (3-й параметр в recv.

Надеюсь, что это поможет. Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...