根据MSDN,您必须创建一个非阻塞套接字,如下所示:
unsigned nonblocking = 1;
ioctlsocket(s, FIONBIO, &nonblocking);
然后在select()
的write-fdset中使用它。要检查连接是否成功,您必须查看套接字是否可写。但是,MSDN文章没有描述如何检查错误。
如何connect()
答案 0 :(得分:2)
您使用getsockopt()
检查套接字错误。这是史蒂文斯的一个片段(授予它的Unix,但winsock应该有类似的东西):
if ( FD_ISSET( sockfd, &rset ) || FD_ISSET( sockfd, &wset )) {
len = sizeof(error);
if ( getsockopt( sockfd, SOL_SOCKET, SO_ERROR, &error, &len ) < 0 )
return -1;
} else {
/* error */
}
现在error
会为您提供错误编号(如果有)。