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

# User Rev Content
1 root 1.2 # $Id: ae0.pl,v 1.1 2009-06-23 12:21:34 root Exp $
2 root 1.1 # 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 root 1.2 my $serv_w = AE::io $serv_sock, 0, sub {
24 root 1.1 accept my $fh, $serv_sock
25     or return;
26     sysread $serv_sock, my $buf, 512;
27     syswrite $serv_sock, $buf;
28 root 1.2 };
29 root 1.1
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 root 1.2 my $w; $w = AE::io $fh, 0, sub {
40 root 1.1 sysread $fh, my $buf, 512;
41     undef $fh;
42     undef $w;
43     &_make_connection;
44 root 1.2 };
45 root 1.1 };
46     } else {
47     $t = time - $t;
48     printf "%.3f sec\n", $t;
49     exit;
50     }
51     };
52    
53     _make_connection;
54 root 1.2 AnyEvent->condvar->recv;
55 root 1.1