根据MSDN,您必须像这样创建一个非阻塞套接字:
unsigned nonblocking = 1;
ioctlsocket(s, FIONBIO, &nonblocking);
然后在 write-fdset 中使用它select()
。要检查连接是否成功,您必须查看套接字是否可写。但是,MSDN 文章没有描述如何检查错误。
我如何查看是否没有connect()
成功,如果是这样,为什么它没有成功?
根据MSDN,您必须像这样创建一个非阻塞套接字:
unsigned nonblocking = 1;
ioctlsocket(s, FIONBIO, &nonblocking);
然后在 write-fdset 中使用它select()
。要检查连接是否成功,您必须查看套接字是否可写。但是,MSDN 文章没有描述如何检查错误。
我如何查看是否没有connect()
成功,如果是这样,为什么它没有成功?
您使用 . 检查套接字错误getsockopt()
。这是 Stevens 的一个片段(当然是 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
给你错误号,如果有的话。