ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/eg/ae0.pl
Revision: 1.2
Committed: Thu Aug 6 14:00:36 2009 UTC (14 years, 9 months ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: rel-5_28, rel-5_29, rel-7_0, rel-5_21, rel-6_0, rel-6_1, rel-5_24, rel-5_26, rel-5_27, rel-5_12, rel-5_1, rel-5_0, rel-5_3, rel-5_2, rel-6_14, rel-5_22, rel-6_11, rel-6_12, rel-6_13, rel-5_261, rel-7_04, rel-7_05, rel-7_07, rel-7_01, rel-7_02, rel-7_03, rel-5_201, rel-5_202, rel-7_08, rel-7_09, rel-5_11, rel-5_23, rel-5_31, rel-5_01, rel-6_02, rel-6_01, rel-5_111, rel-5_112, rel-5_271, rel-7_16, rel-7_15, rel-7_14, rel-7_13, rel-7_12, rel-7_11, rel-5_251, HEAD
Changes since 1.1: +6 -6 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 # $Id: ae0.pl,v 1.1 2009-06-23 12:21:34 root Exp $
2 # An echo client-server benchmark.
3
4 use warnings;
5 use strict;
6
7 use Time::HiRes qw(time);
8 use AnyEvent;
9 use AnyEvent::Impl::Perl;
10 use AnyEvent::Socket;
11 use IO::Socket::INET;
12
13 my $CYCLES = 500;
14 my $port = 11212;
15
16 my $serv_sock = IO::Socket::INET-> new(
17 Listen => 5,
18 LocalPort => $port,
19 Proto => 'tcp',
20 ReuseAddr => 1,
21 );
22
23 my $serv_w = AE::io $serv_sock, 0, sub {
24 accept my $fh, $serv_sock
25 or return;
26 sysread $serv_sock, my $buf, 512;
27 syswrite $serv_sock, $buf;
28 };
29
30 my $t = time;
31 my $connections;
32
33 sub _make_connection {
34 if ($connections++ < $CYCLES) {
35 tcp_connect "127.0.0.1", $port, sub {
36 my ($fh) = @_
37 or die "tcp_connect: $!";
38 syswrite $fh, "can write $connections\n";
39 my $w; $w = AE::io $fh, 0, sub {
40 sysread $fh, my $buf, 512;
41 undef $fh;
42 undef $w;
43 &_make_connection;
44 };
45 };
46 } else {
47 $t = time - $t;
48 printf "%.3f sec\n", $t;
49 exit;
50 }
51 };
52
53 _make_connection;
54 AnyEvent->condvar->recv;
55