Ошибка WSAEWOULDBLOCK при неблокирующем Connect ()

Я пытаюсь подключиться к серверу на другом компьютере через неблокирующее соединение ().

Однако, когда я делаю это, Connect () возвращает -1, и я получаю WSAEWOULDBLOCK от WSAGetLastError ().

Документация MSDN гласит, что: — нормально сообщать WSAEWOULDBLOCK как результат вызова connect через неблокирующий сокет SOCK_STREAM, поскольку для установления соединения должно пройти некоторое время (ссылка).

Проблема в том, что я всегда получаю сообщение об ошибке, и -1 возвращается из connect () ДАЖЕ ЕСЛИ мой сервер не работает.

Мой сокет — это сокет SOCK_STREAM, как и предполагалось. Как я могу исправить это? Должен ли я предоставить тайм-аут после вызова connect (), чтобы было достаточно времени для установления соединения?

0

Решение

использование ConnectEx и передать OVERLAPPED состав. Таким образом, вы можете получить фактическое состояние позже, когда попытка подключения завершится.

2

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

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

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