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

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

[日期:2013-03-23] 来源:Linux社区  作者:fireroll [字体: ]
三、发送端示例代码
#! /usr/bin/perl
###############################################################################
# \File
# tcp_client.pl
# \Descript
# send message to server
###############################################################################
use IO::Socket;
use IO::Select;

#hash to install IP Port
%srv_info =(
"srv_ip" => "192.168.1.73",
"srv_port"=> "5277",
);

my $srv_addr = $srv_info{"srv_ip"};
my $srv_port = $srv_info{"srv_port"};

my $sock = IO::Socket::INET->new(
PeerAddr => "$srv_addr",
PeerPort => "$srv_port",
Type => SOCK_STREAM,
Proto => "tcp",
)
or die "Can not create socket connect. $@";

$sock->send("Client OK!\n", 0) or warn "send failed: $!, $@";
$sock->autoflush(1);

my $sel = IO::Select->new($sock);
while(my @ready = $sel->can_read)
{
foreach my $fh(@ready)
{
if($fh == $sock)
{
while(<$fh>)
{
print $_;
}
$sel->remove($fh);
close $fh;
close FILE;
}
}
}
$sock->close();

四、接收端示例代码
#! /usr/bin/perl
###############################################################################
# \File
# tcp_server.pl
# \Descript
# listen to local port
###############################################################################
use IO::Socket;
use IO::Select;

#hash to install IP Port
%srv_info = (
"clt_ip" => "192.168.1.72",
"clt_port" => "5277",
"srv_ip" => "192.168.1.73",
"srv_port" => "5277",
);
$SIG{INT} = $SIG{TERM} = sub{
$sock->close() or warn "Close Socket failed. $!, $@";
}

my $clt_addr = $srv_info{"clt_ip"};
my $clt_port = $srv_info{"clt_port"};
my $srv_addr = $srv_info{"srv_ip"};
my $srv_port = $srv_info{"srv_port"};

my $sock = IO::Socket::INET->new(
PeerAddr => "$clt_addr",
PeerPort => "$clt_port",
LocalAddr=> "$srv_addr",
LocalPort=> "$srv_port",
Type => SOCK_STREAM,
ReuseAddr=> SO_REUSEADDR, # Recycling port and reusing
Proto => "tcp",
Listen => 20,
)
or die "Can not create socket connect: $!, $@";

my $sel = IO::Select->new($sock);
while(my @ready = $sel->can_read)
{
foreach my $fh(@ready)
{
if($fh == $sock)
{
my $new = $sock->accept();
$sel->add($new);
}
else
{
$len = $fh->recv($buffer, 1024, 0);
print "$buffer\n";
$fh->send("Server OK!\n",0);
$fh->autoflush(1);
$sel->remove($fh);
$fh->close();
}
}
}
$sock->close() or warn "Close Socket failed. $!, $@";linux
相关资讯       Linux Socket通信  Perl Socket 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

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