我正在使用 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()?你会只是分离线程并忘记它吗?