在 Win32 环境中是否有任何方法可以“调整”套接字connect()
调用的超时?具体来说,我想增加超时长度。正在使用的套接字是非阻塞的。谢谢!
Brian
问问题
2628 次
3 回答
0
您可以尝试使用 SO_RCVTIMEO 和 SO_SNDTIMEO 套接字选项来设置任何套接字操作的超时。例子:
struct timeval timeout;
timeout.tv_sec = 10;
timeout.tv_usec = 0;
if (setsockopt (sockfd, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout,
sizeof(timeout)) < 0)
error("setsockopt failed\n");
if (setsockopt (sockfd, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout,
sizeof(timeout)) < 0)
error("setsockopt failed\n");
你也可以试试alarm()。样本:
signal( SIGALRM, connect_alarm ); /* connect_alarm is you signal handler */
alarm( secs ); /* secs is your timeout in seconds */
if ( connect( fd, addr, addrlen ) < 0 )
{
if ( errno == EINTR ) /* timeout, do something below */
...
}
alarm( 0 ); /* cancel the alarm */
于 2012-03-26T06:33:21.863 回答
0
不,这是不可能的。默认连接超时可以减少,但不能增加。
于 2013-10-09T00:25:29.350 回答