你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux Socket实现机器间的通信(Perl)

[日期:2013-03-23] 来源:Linux社区  作者:fireroll [字体: ]
一、IO::Socket简介
IO::Socket, 它是socket通信的面向对象的Perl接口。
IO::Socket下又有两个子类IO::Socket::INET与IO::Socket::UNIX.

现在用的是IO::Socket::INET。它的步骤是:
先调用new方法,
然后就可以进行基本I/O操作(使用print与getline等基本I/O方法)了,
最后调用close方法结束会话,那么整个SOCKET会话就算完成了。

方法:
1. new()方法:
语法:
SOCKET对象变量 = IO::Socket::INET->new(SOCKET变量值);
实例:
$sock=IO::Socket::INET->new('192.168.1.2:23');
讲解:
所有的PERL对象编程都把对象‘形象化’为某个变量,
这里的SOCKET句柄对象也不例外,调用此方法的返回值便为SOCKET对象变量了。
这里使用参数为简单参数模式,
在双引号或但引号内的socket地址结构为:
'主机IP或域名:端口号或服务名称',
或 '主机IP或域名:服务名称(端口号)'。

除了最简单的单参数调用外,new方法还有很多参数可以选择性调用的,
下面就对这些参数的简单概括:
***********************************************************************
参数 描述 值类型
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
PeerAddr 远程主机的地址 主机地址[:端口或服务]
PeerHost 与PeerAddr相同
PeerPort 远程端口或服务 端口或服务
LocalAddr 本地地址 主机地址[:端口或服务]
LocalHost 与LocalAddr相同
LocalPort 本地端口 端口或服务
Proto 所使用的协议 协议名或协议号
Type 套接字类型 SOCK_STREAM/SOCK_DGRAM...
Listen 监听的队列长度 整形数
Reuse 用于避免重启时BIND时间间隙 布尔值
Timeout 超时值 整形数
MultiHomed 用于连接多IP地址 布尔值
***********************************************************************

PeerAddr(远程主机地址)与
PeerHost(远程主机名)基本相同,
调用方式也相同,其值格式除了标准的格式外,还可以加':'号后再加端口或服务,
这样的的话,后面的参数PeerPort(远程主机端口或服务)的值就无效了。

PeerPort(远程主机端口或服务),
其值的格式可以是端口,还可以是服务名,
更可以是‘组合’,
如:"telnet(23)";
当PeerAddr(远程主机地址)或PeerHost(远程主机名)的值格式中指明了端口,
再调用此参数时,此参数的值无效。

LocalAddr(本地主机地址)、
LocalHost(本地主机名)、
LocalPort(本地主机端口或服务)之间的关系与调用方式
与上面介绍的三个参数
PeerAddr(远程主机地址)、
PeerHost(远程主机名)、
PeerPort(远程主机端口或服务)相当。

还有一种情况,就是如果
只定义了LocalPort(本地主机端口或服务),
而没有定义LocalAddr(本地主机地址)或LocalHost(本地主机名),
那IO::Socket会将本地机器的地址的值默认为INADDR_ANY通配符,
也就是不定义本地主机的地址值的话就定义为允许所有接口。linux
相关资讯       Linux Socket通信  Perl Socket 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款