anyevent::socket+anyevent::handle server编程 (echo server改造 + 测试server)
来源:互联网 发布:配置apache 编辑:程序博客网 时间:2024/06/08 05:11
push_read是一次性的读.
改为on_read方法可以实现持续读.直到客户端断开
#!/bin/env perl#使用on_read代替push_readuse 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; $hdl = new AnyEvent::Handle fh => $fh, on_error => sub { #AE::log error => $_[2]; $_[0]->destroy; }, on_eof => sub { $hdl->destroy; # destroy handle #AE::log info => "Done."; }; $hdl->on_read (sub { my ($h)=@_; my $line=$h->rbuf; print "got a line $line."; $h->push_write ("$line"); $_[0]->rbuf = ""; #undef $hdl; }); };#这两个都可以。。。#$cv->wait;$cv->recv;
这个稍微改改就可以配合前面的client测试了
#!/bin/env perl#sever AnyEvent::Socket版use strict;use IO::Socket::INET;use AnyEvent;#这个是ae的perl实现,要比EV慢一点点use AnyEvent::Impl::Perl;use AnyEvent::Socket;use AnyEvent::Handle;my $cv = AnyEvent->condvar;AnyEvent::Socket::tcp_server undef, 1234, sub { my ($fh, $host, $port) = @_; #print "Got new client connection: $host:$port\n"; my $hdl; #这个定义很关键 $hdl = new AnyEvent::Handle fh => $fh, on_error => sub { #AE::log error => $_[2]; $_[0]->destroy; }, on_eof => sub { $hdl->destroy; # destroy handle #AE::log info => "Done."; }; $hdl->on_read (sub { my ($h)=@_; my $line=$h->rbuf; print $h->fh->fileno, ":", $line, " "; #print "got a line $line."; #$h->push_write ("$line"); $_[0]->rbuf = ""; #undef $hdl; }); # $hdl->on_read (sub {# my ($hdl) = @_;# print $hdl->fh->fileno, ":", $hdl->rbuf, " ";# $hdl->rbuf = "";# });};#$cv->wait;$cv->recv;
说明,anyevent::socket先对coro::socket来说要多得多了,而且也有了一些例子
不过摸索过程中也出了很多状况
可能和当时人的精神状态有关
怎么也调不过
等过一天重新写一遍,可能就好了.
- anyevent::socket+anyevent::handle server编程 (echo server改造 + 测试server)
- Anyevent::socket和Coro::Handle组合,echo server(完结)
- perl anyevent socket编程(1)-echo client/server
- anyevent::socket+coro::handle client编程(测试客户端)
- anyevent::socket+anyevent::client 测试客户端
- coro::socket+coro::handle echo server(2)-sysread 的改造
- corc::socket+coro::handle server-echo server
- perl AnyEvent
- Echo server
- ECHO Server
- echo server
- Anyevent学习之一:Anyevent::HTTP
- 最简单的PHP socket echo server。
- Socket tips: UDP Echo service - Server code
- linux socket编程-server
- Java Socket Server编程
- java socket通讯之 echo server 和echo client例子
- CAS Server改造
- Spring Security 相关教程集合
- HTML table 直列化格式
- gnome3找不到开机启动管理
- 设计模式22 - 模板方法模式 - Template Method
- 动态生成
- anyevent::socket+anyevent::handle server编程 (echo server改造 + 测试server)
- Word2010水印添加与打印技巧
- 触控游戏的设计—Windows Phone 7游戏开发
- android OTA 简介
- excel创建服务失败处理办法
- 报文解析各协议结构体
- Windows 平台搭建安卓开发环境
- 如何使用Model View delegate自定义列表
- ARM中的链接地址(为什么ARM要重定位)?