1

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

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

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

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

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

4

1 回答 1

2

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

于 2012-12-24T03:03:23.193 回答