我正在使用Perl(希望不会影响任何内容),但我需要知道如何设置连接操作的超时时间。问题在于,我不能永远等待连接操作完成。如果它在几秒钟内没有完成,我宁愿放弃并继续进行下一步。
socket(my $sock, PF_INET, SOCK_STREAM, (getprotobyname('tcp'))[2]);
setsockopt($sock, SOL_SOCKET, SO_SNDTIMEO, 10); # send timeout
print "connecting...\n";
connect($sock, sockaddr_in(80,scalar gethostbyname('lossy.host.com')));
print "connected...\n";
问题在于,如果与“lossy.host.com”的连接是“不稳定或缓慢或除了快速以外的其他情况”,我宁愿放弃而不是让用户等待。(把它想象成一个执行其他操作的程序的副作用...用户可能不希望这个脚本与某个服务器通信...)
线程案例:您将如何中断connect()?您只需分离线程并忘记它吗?