3

根据MSDN,您必须像这样创建一个非阻塞套接字:

unsigned nonblocking = 1;
ioctlsocket(s, FIONBIO, &nonblocking);

然后在 write-fdset 中使用它select()。要检查连接是否成功,您必须查看套接字是否可写。但是,MSDN 文章没有描述如何检查错误。

我如何查看是否没有connect()成功,如果是这样,为什么它没有成功?

4

1 回答 1

3

您使用 . 检查套接字错误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给你错误号,如果有的话。

于 2009-05-22T18:58:55.890 回答