Я пытаюсь подключиться к серверу на другом компьютере через неблокирующее соединение ().
Однако, когда я делаю это, Connect () возвращает -1, и я получаю WSAEWOULDBLOCK от WSAGetLastError ().
Документация MSDN гласит, что: — нормально сообщать WSAEWOULDBLOCK как результат вызова connect через неблокирующий сокет SOCK_STREAM, поскольку для установления соединения должно пройти некоторое время (ссылка).
Проблема в том, что я всегда получаю сообщение об ошибке, и -1 возвращается из connect () ДАЖЕ ЕСЛИ мой сервер не работает.
Мой сокет — это сокет SOCK_STREAM, как и предполагалось. Как я могу исправить это? Должен ли я предоставить тайм-аут после вызова connect (), чтобы было достаточно времени для установления соединения?
использование ConnectEx
и передать OVERLAPPED
состав. Таким образом, вы можете получить фактическое состояние позже, когда попытка подключения завершится.
Других решений пока нет …