在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
研究结果出来了,看了下仙子的案例,这个是最稳定最靠谱的了。 Server端: #!/usr/bin/perl use IO::Socket; use IO::Select; # 如果需要打印到目前终端,需要加上 $|++; # 创建一个监听 my $socket=IO::Socket::INET->new(LocalAddr =>'192.168.31.60', LocalPort =>9981, Listen =>5, Proto =>'tcp') or die $@; # 创建一格IO::Select目标 my $read_set=new IO::Select(); # 把上述侦听socket加入到检查队列 $read_set->add($socket); # 启动的时候添加一个标识,用于调试 print "监听启动\n"; # 创建一个死循环 while(1){ # 返回一个三参数列表,第一个参数表示可读的socket句柄集合(一个数组引用) my ($rh_set) = IO::Select->select($read_set, undef, undef, undef); # 遍历可读的socket foreach my $rh (@$rh_set){ if($rh == $socket){ my $ns = $rh->accept(); $read_set->add($ns); }else{ my $buf = undef; if (sysread($rh,$buf,2048)){ print "插入数据:$buf\n"; open LOG,'>>a.out'; print LOG "$buf\n"; close LOG; }else{ print "数据传送完!\n"; $read_set->remove($rh); $rh->close; } } } } Client端: #!/usr/bin/perl use IO::Socket; # 创建连接的Socket,连接到192.168.31.60 端口9981 my $sock=IO::Socket::INET->new(PeerAddr =>'192.168.31.60', PeerPort => 9981, Proto =>'tcp') or die $@; # 发送数据,Hello就是要传送的数据. while(<>){ print $sock $_ . "\n"; } # 发送完就关闭 $sock->close or die $!; # 退出 exit 0;
|
请发表评论