perl Socket接收超时设置
一般来说, IO::Socket::INET里的Timeout设置是对于conncet的
如果你想设置recv接收超时, 可以这样设置:
usr Socket:
......
setsockopt($socket, SOL_SOCKET, SO_RCVTIMEO, pack('l!l!', , ));
#注意这里pack有三个参数, 后面的1表示超时1秒, 最后的0你可以默认
#而前面的'l!l!', !表示64位平台
#如果你是用IO::Socket::INET他的socket, 可以这样:
use IO::Socket::INET;
my $socket = IO::Socket::INET->new();
$socket->setsockopt(SOL_SOCKET, SO_RCVTIMEO, pack('l!l!', , )); #如果你觉得麻烦, 可以安装 IO::Socket::Timeout模块, 用如下方式设置接收超时或发送超时:
# 1. Creates a socket as usual
my $socket = IO::Socket::INET->new( ... ); # 2. Enable read and write timeouts on the socket
IO::Socket::Timeout->enable_timeouts_on($socket); # 3. Setup the timeouts
$socket->read_timeout(0.5);
$socket->write_timeout(0.5); # 4. Use the socket as usual
my $data = <$socket>; #
这里有一点要说明, 可能新人有点迷惑。
那就是io::socket::inet创一个socket时, 这个socket是未定义的, 要等 到它连接成功了才变成定义状态。
所以, 当你用io::socket::timeout时, 记得要连接成功了才调用, 要不会出现error, 提示方法不能用于一个未定义的变量。

像上面的代码所示, 如果把20行放到17行的位置, 程序将会出错。
文章参考自:http://blog.booking.com/socket-timeout-made-easy.html
perl Socket接收超时设置的更多相关文章
- C# Socket连接超时设置
问题描述: 对于C# Socket没有超时设置的选项,默认情况下进行Socket连接,返回连接失败需要20-30s时间,严重影响用户体验 问题解决: Socket服务器端: Socke ...
- connect socket的超时设置
最近项目中,有个需求是检测某ip地址是否是通的,使用了socket的connect函数.但是,当ip地址写错的话,connect就会一直阻塞在那里,大概2.3分钟才能返回连接失败.这对于用户来说是不可 ...
- LR Socket接收超时TPS上不去解决方法
在一次做项目中,由于Socket协议接收的报文会有不定长度,基本每次都会有变化,在data.ws 接收buf1有固定长度,这是在接收的实时报文会有长度不一致的问题.这时LR默认会去与接收的报文的长度及 ...
- 【c#】设置Socket连接、接收超时(转)
用到Socket,发现如果连接错误,比如Connect的端口不对,会造成很长时间的延时,程序就僵在那里,效果很不好: 在网上找到很方便的设置办法,分享如下: Socket.SetSocketOptio ...
- 【c#】设置Socket连接、接收超时
用到Socket,发现如果连接错误,比如Connect的端口不对,会造成很长时间的延时,程序就僵在那里,效果很不好: 在网上找到很方便的设置办法,分享如下: Socket.SetSocketOptio ...
- 设置socket接收和发送超时的一种方式
Linux环境设置Socket接收和发送超时: 须如下定义:struct timeval timeout = {3,0}; //设置发送超时setsockopt(socket,SOL_SOCKET, ...
- C++ Socket超时设置
用winsocket时,send(),recv()过程中有时由于网络状况等原因,收发不能预期进行,可以设置收发时限:int nNetTimeout = 1000; //1秒//发送时限setsocko ...
- php socket 超时设置
1.php创建socket的方法和设置超时的方法,贴出来分享一下 //如果$waitAckSec=0,则返回成功发送的字节�? //如果$waitAckSec大于0,则返回发送后接收到得内容 //任何 ...
- VC socket Connect 超时时间设置
设置connect超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案.偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使 ...
随机推荐
- BFS - leetcode [宽度优先遍历]
127. Word Ladder int size = q.size(); for(int k = 0; k < size; k++){//for 次数 找到一个erase一个 q里面加入的是所 ...
- 关于masonry
简单的就不说了,网上很多教程 设置优先级 [label setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis ...
- Python基础(十三)-进程&线程
进程 定义:进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的基本单位 线程
- HDU 4262 Juggler
点我看题 初步想法是模拟,找到下一个位置并记录操作数,O(n^2)肯定会超时. 那么进行优化,会发现到下一位置的操作数就是两个位置之间存在的数的个数,于是就变成了计数问题. 不难想到用树状数组或线段树 ...
- 寒假学干货之------LinearLayout.layout.weight
所有原始代码由这个大神写的--http://www.cnblogs.com/zhangs1986/archive/2013/01/17/2864237.html layout/activity_mai ...
- 【JS】学习18天Jquery Moblie的总结笔记。
现在是2013年11月18日1:53分,从1号开始学习JqueryMoblie(简称JQM),这些天遇到的问题,和走的弯路还真不少. 先做个小总结,做了那么多天的一些收获: ●JQM是一个手机网站/轻 ...
- 《JavaScript高级程序设计》读书笔记 ---基本包装类型
为了便于操作基本类型值,ECMAScript 还提供了3 个特殊的引用类型:Boolean.Number 和String.这些类型与本章介绍的其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行 ...
- HDU:3368-Reversi(暴力枚举)
Reversi Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- 常用ARM指令集及汇编_破解
链接地址:http://pan.baidu.com/s/1hsNtxJm
- log4j2
转载自 Blog of 天外的星星: http://www.cnblogs.com/leo-lsw/p/log4j2tutorial.html Log4j 2的好处就不和大家说了,如果你搜了2,说明你 ...