非阻塞Connect()上的WSAEWOULDBLOCK错误

时间:2012-12-24 02:59:41

标签: c++ winsock winsock2

我正在尝试通过非阻塞连接()连接到另一台计算机上的服务器。

但是,当我这样做时,Connect()返回-1,我从WSAGetLastError()收到WSAEWOULDBLOCK。

MSDN文档指出:在非阻塞SOCK_STREAM套接字上调用connect会导致报告WSAEWOULDBLOCK是正常的,因为必须经过一段时间才能建立连接(reference)。

问题是我总是收到错误,并且从connect()返回-1,即使我的服务器没有运行。

我的套接字是SOCK_STREAM套接字,正如建议的那样。我该如何解决这个问题?我应该在connect()调用之后提供超时,以确保为连接建立连接提供足够的时间吗?

1 个答案:

答案 0 :(得分:2)

使用ConnectEx并传递OVERLAPPED结构。这样,您可以在以后连接尝试完成时检索实际状态。