anyevent::socket+coro::handle client编程(测试客户端)
来源:互联网 发布:编程学校多少钱 编辑:程序博客网 时间:2024/06/08 07:10
还是一样的功能,使用anyevent::socket+coro::handle实现
#!/bin/env perl#使用anyevent::socket作client(ok)#使用coro::handle处理use strict;use AnyEvent;use Coro;use Coro::AnyEvent;use Coro::Handle; use AnyEvent::Socket;#控制超时用#如果用默认的select,就会阻塞use Coro::Select qw(select);my $cocurrent = 3; # 并发数my @coro;doit() foreach 1..$cocurrent;sub doit{ push @coro, async { # 创建到server的连接socket #使用无阻塞的socket#两种都可以 # my $sock= Coro::Socket ->new(PeerAddr => 'localhost',# PeerPort => 1234,# Proto => 'tcp');# my $sock= new Coro::Socket(PeerAddr => 'localhost',# PeerPort => 1234,# Proto => 'tcp'); tcp_connect "localhost", 1234, Coro::rouse_cb; my $sock = unblock +(Coro::rouse_wait)[0]; for (1..10) { # 每个协 程里,发送10次数据 #print $sock (random() . "\n"); $sock->print(random() . "\n"); #使用select休眠0.25s select(undef, undef, undef, 0.5); #Coro::Select::select(undef, undef, undef, 0.5); # 每发送一次,就休眠0.25秒 #或者使用非阻塞的sleep 1s.否则会阻塞 #Coro::AnyEvent::sleep 1; } $sock->close; # 发送完后关闭socket,并退出 return; } }foreach (@coro) { print "joining\n"; $_->join; print "joined\n";};sub random { # 该函数产生随机字串 my @x=(0..9,'a'..'z','A'..'Z'); join '',map {$x[int rand @x]} 1..49; # 返回49字节长度的串}
小结一下
可以使用的组合有
coro::socket+coro::handle 这个比较简单,类似以前的代码风格
anyevent::socket+anyevent::handle 这个就是回调函数的风格
anyevent::socket+coro::handle 这个目前还有点没弄明白.client没问题,但是server没搞定
- anyevent::socket+coro::handle client编程(测试客户端)
- coro::socket+coro::handle client编程(测试client)
- anyevent::socket+anyevent::client 测试客户端
- Anyevent::socket和Coro::Handle组合,echo server(完结)
- anyevent::socket+anyevent::handle server编程 (echo server改造 + 测试server)
- perl coro socket编程(2)-客户端coro改造
- perl anyevent socket编程(1)-echo client/server
- coro::socket+coro::handle echo server(2)-sysread 的改造
- anyevent::snmp+coro
- corc::socket+coro::handle server-echo server
- perl coro socket编程(1)
- Java----Socket编程之模拟客户端Client
- C#版 Winform界面 Socket编程 Client客户端
- Java Socket 编程 Client
- linux socket编程-client
- android socket编程client
- Java Socket Client编程
- Android-socket-client 客户端实现
- emacs 智能的改变光标形状
- IOS: iPhone键盘通知与键盘定制
- Android 之实用小代码-获取屏幕尺寸、判断是否是平板、文字颜色、点击效果、计算字宽等。
- nettier datasouce
- 批处理一个脚本,写下备忘(递归查找文件,文件含指定字符串)
- anyevent::socket+coro::handle client编程(测试客户端)
- 6 文件系统
- freemarker开发word步骤
- 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)
- [软件推荐]使用OneNote来构建你自己的知识库(OFFICE2010)
- POI3.9操作Excel (一)
- 简化数字营销综合型云端平台——Infosys BrandEdge
- c++test 工具下载网站 (破解或license)
- 初学者如何学习FPGA