在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一般来说, IO::Socket::INET里的Timeout设置是对于conncet的 1 usr Socket: 2 ...... 3 setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack('l!l!', 1, 0)); 4 #注意这里pack有三个参数, 后面的1表示超时1秒, 最后的0你可以默认 5 #而前面的'l!l!', !表示64位平台 6 #如果你是用IO::Socket::INET他的socket, 可以这样: 7 use IO::Socket::INET; 8 my $socket = IO::Socket::INET->new(); 9 $socket->setsockopt(SOL_SOCKET, SO_RCVTIMEO, pack('l!l!', 1, 0)); 10 11 #如果你觉得麻烦, 可以安装 IO::Socket::Timeout模块, 用如下方式设置接收超时或发送超时: 12 # 1. Creates a socket as usual 13 my $socket = IO::Socket::INET->new( ... ); 14 15 # 2. Enable read and write timeouts on the socket 16 IO::Socket::Timeout->enable_timeouts_on($socket); 17 18 # 3. Setup the timeouts 19 $socket->read_timeout(0.5); 20 $socket->write_timeout(0.5); 21 22 # 4. Use the socket as usual 23 my $data = <$socket>; 24 25 # 这里有一点要说明, 可能新人有点迷惑。 像上面的代码所示, 如果把20行放到17行的位置, 程序将会出错。 文章参考自:http://blog.booking.com/socket-timeout-made-easy.html |
请发表评论