在非阻塞连接()时出错

WSAEWOULDBLOCK error on non-blocking Connect()

本文关键字:出错 连接      更新时间:2023-10-16

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

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

MSDN文档声明:WSAEWOULDBLOCK被报告为在非阻塞SOCK_STREAM套接字上调用connect的结果是正常的,因为必须经过一些时间才能建立连接(参考)。

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

我的套接字是一个SOCK_STREAM套接字,正如建议的那样。我该如何补救呢?我是否应该在connect()调用之后提供一个超时,以确保connect有足够的时间来建立连接?

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