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中,简单点讲,"作用使 ...
随机推荐
- 【git】TurtoiseGit使用手册
A,创建本地分支 操作:Create Branch ->输入本地分支名 -> OK B,创建本地分支和远程分支的映射 操作: 1,拉取远程分支:Fetch -> 选中Arbitray ...
- python demo整理
1 变量作用域 #!/usr/bin/python # coding=utf-8 name = "whole global name" class Person: name = & ...
- incomplete type is not allowed
keil环境下,报错#70: incomplete type is not allowed,解决 mqtt_conf.h 定义了一个结构体 mqtt_buffer.h #include <std ...
- OpenCV FileStorage 使用记录
FileStorage OpenCV 中的 FileStorage 类能够读写硬盘中的.xml和.yaml文件,这里我们只讨论对 .xml 的以下几种操作: 写入(FileStorage::WRITE ...
- 搭建属于你自己的RAMOS系统 – WIN7+VHD+GURB map方式
前段时间加了一个内存条,将笔记本内存升级到了6G,由于之前用的是32位的win7不可以直接使用6G内存,便装了64位的系统.网上找资源的时候发现,大内存可以使用RamOS,从内存中虚拟出来一个硬盘,然 ...
- Github朝花夕拾
删除fork的项目 下载指定revision的repository 通过git log查看提交历史,最好是GUI查看 然后执行命令git reset –hard <sha1> 同步到最 ...
- HDU3791二叉搜索树(二叉树)
Problem Description 判断两序列是否为同一二叉搜索树序列 Input 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束.接下去一行是一 ...
- oracle 写入txt
分几个步骤 1,创建输出路径,比如你要在/orcl/dir目录下输出,你就先要建立好这个路径,并在root用户下 chmod 777 /orcl/dir 2,sqlplus下以sysdba登录,执行以 ...
- 使用php创建WebSocket服务
执行方法:首先先修改server.php与index.html的ip通过命令行执行 [php路径]php.exe "[文件路径]server.php"然后通过浏览器打开index. ...
- Hadoop安装教程
单机.伪分布式:http://dblab.xmu.edu.cn/blog/install-hadoop/ 集群:http://dblab.xmu.edu.cn/blog/install-hadoop- ...