来自Winsock的connect()函数超时

anc*_*anc 2 c++ sockets winapi winsock visual-studio

当我从Winsock调用connect()函数时,有没有办法减少超时?我想差不多30秒,我想放5秒钟.

Ser*_*eyA 6

最简单的方法是在连接时以非阻塞模式使用套接字,并使用select()5秒的超时来检查套接字是否可写.后select()退出,无论连接建立.如果不是,请考虑连接超时并根据需要执行错误处理.

  • @cna:非阻塞套接字在后台建立连接,而代码继续执行其他操作.因此,将套接字设置为非阻塞模式(`ioctlsocket(FIONBIO)`设置为1),然后调用`connect()`.如果`connect()`返回`SOCKET_ERROR`并且`WSAGetLastError()`返回`WSAEWOULDBLOCK`,则连接正在进行中,所以在5秒超时时调用`select()`.如果`select()`返回成功,表明套接字是可写的,则建立连接.否则,关闭套接字. (3认同)