加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl anyevent socket编程(1)-echo client/server

发布时间:2020-12-16 00:20:08 所属栏目:大数据 来源:网络整理
导读:?本来是测试coro socket server的,结果没搞定,太面了....coro::socket的文档也太简略了. 先看看anyevent的例子吧,这个出自eg中的ae2.pl 我分成了c/s两个 server代码 use warnings;use strict;use Time::HiRes qw(time);use AnyEvent;#这个是ae的perl实现,要

?本来是测试coro socket server的,结果没搞定,太面了....coro::socket的文档也太简略了.

先看看anyevent的例子吧,这个出自eg中的ae2.pl

我分成了c/s两个

server代码

use warnings;
use strict;

use Time::HiRes qw(time);
use AnyEvent;
#这个是ae的perl实现,要比EV慢一点点
use AnyEvent::Impl::Perl;
use AnyEvent::Socket;
use AnyEvent::Handle;

my $CYCLES = 500;
my $port   = 11212;

#这两个都可以
my $cv = AnyEvent->condvar;
#my $cv = AE::cv;
  
tcp_server undef,$port,sub {
   my ($fh) = @_
      or die "tcp_server: $!";

   my $hdl = new AnyEvent::Handle fh => $fh;

   $hdl->push_read (line => sub {
      $hdl->push_write ("$_[1]n");
      undef $hdl;
   });
};

#这两个都可以。。。
#$cv->wait;
$cv->recv;


client的代码

use warnings;
use strict;

use Time::HiRes qw(time);
use AnyEvent;
use AnyEvent::Impl::Perl;
use AnyEvent::Socket;
use AnyEvent::Handle;

my $CYCLES = 500;
my $port   = 11212;



my $t = time;

for my $connections (1..$CYCLES) {
   my $cv = AE::cv;

   tcp_connect "127.0.0.1",sub {
      my ($fh) = @_
         or die "tcp_connect: $!";

      my $hdl = new AnyEvent::Handle fh => $fh;

      $hdl->push_write ("can write $connectionsn");
      $hdl->push_read (line => sub {
      	 my (undef,$line) = @_;
      	 print "got line $line.n";
         undef $hdl;
         $cv->send;
      });
   };

   $cv->recv;
};

$t = time - $t;
printf "%.3f secn",$t;
exit;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读