使用 WinSocks 进行非阻塞 connect()
根据 MSDN 你必须创建一个非像这样阻塞套接字:
unsigned nonblocking = 1;
ioctlsocket(s, FIONBIO, &nonblocking);
然后在 select()
的 write-fdset 中使用它。 要检查连接是否成功,您必须查看套接字是否可写。 但是,MSDN 文章没有描述如何检查错误。
如何查看 connect()
是否没有成功,如果是这样,为什么没有成功?
According to MSDN you have to create a non-blocking socket like this:
unsigned nonblocking = 1;
ioctlsocket(s, FIONBIO, &nonblocking);
and use it in the write-fdset for select()
after that. To check if the connection was successful, you have to see if the socket is writeable. However, the MSDN-article does not describe how to check for errors.
How can I see if connect()
did not succeed, and if that is the case, why it did not succeed?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
getsockopt()
检查套接字错误。 下面是 Stevens 的一个片段(假定它是 Unix,但 Winsock 应该有类似的东西):现在
error
为您提供错误号(如果有)。You check socket error with
getsockopt()
. Here's a snippet from Stevens (granted it's Unix, but winsock should have something similar):Now
error
gives you the error number, if any.