[Rio-pm] AnyEvent

Aureliano Guedes guedes_1000 em hotmail.com
Quarta Março 14 14:02:45 PDT 2012


Valeu mesmo a ajuda, o bom de ser um "Perlzeiro" é que alem da linguagem maravilhosa tem uma comunidade muito
atenta para ajudar.

Poderia dar uma analizada no meu codigo.


#!/usr/bin/perl -w


use common::sense;
use IO::Socket::INET;
use AnyEvent::Util;
use List::Util qw(shuffle);


sub usage {
   printf "Usage: %s <hostaddr> <port> <packs> <request>\n", $0;
   printf "   <hostaddr> - Adress to check.\n";
   printf "   <port>     - Port to check 1-1024(default is 80).\n";
   printf "   <packs>    - Number of packages(default is 65000).\n";
   printf "   <request>  - Number of requests(default is 10).\n";
   exit;
}

my $host = $ARGV[0] || usage;
my $port = $ARGV[1] || 80;
my $request = $ARGV[2] || 10;
my $a = 1;
my $cv = AE::cv;

    $AnyEvent::Util::MAX_FORKS = 10;

while ($a <= $request){

    $cv->begin;
        fork_call {
            sleep $a;
        } sub {
            &connect($port, $host);
            $cv->end;
        };


}

sub connect{
    my $pr = shift;
    my $ht = shift;
    my $ping = IO::Socket::INET->new(
        PeerPort => $pr ,
        PeerAddr => $ht,
        Proto => 'udp',
        LocalAddr => 'localhost',
        Broadcast => 1 )
    or die "Can't bind : $@\n";
}

From: creaktive em gmail.com
Date: Wed, 14 Mar 2012 17:48:24 -0300
To: rio-pm em pm.org
Subject: Re: [Rio-pm] AnyEvent

Você está fazendo isso certo :)Um exemplo ilustrativo tosco de como usar AnyEvent para o que vc quer (observe a lógica; o protocolo aqui é HTTP em cima de TCP):



        my $cv = AE::cv;



        my $i = 0;






        my $get;



        $get = sub {



            $cv->begin;



            http_get $urls[$i++], sub {



                $get->() if $i <= $#urls;



                $cv->end;



            };



        };






        for (1 .. $parallel) {



            $get->();



        }



        $cv->wait;


Mais detalhes sobre AnyEvent:
http://sao-paulo.pm.org/equinocio/2011/set/13
ABS()





On Wed, Mar 14, 2012 at 17:29, Aureliano Guedes <guedes_1000 em hotmail.com> wrote:






Boa tarde monges, 
estou tentando entender o modulo AnyEvent, mas programação orientada a eventos é  russo pra minha cabeça ainda.

Eu tenho uma rotina que se conecta a um IP qualquer usando protocolo UDP com IO::Socket::INET, e quero que essa rotina tente fazer 10 requisições por vez.


Eu ja eliminei a ideia de usar threads, mas to com dificuldade de usar esse modulo.

To totalmente perdido, pensei em usar AnyEvent::Util e List::Util, mas to começando a achar que não é apropriado, mas foi la que achei um exemplo mais ou menos...



Se puderem colaborar com um exemplo bem simples para eu entender, eu agradeço...

Att,
Aureliano Guedes
 		 	   		  

_______________________________________________

Rio-pm mailing list

Rio-pm em pm.org

http://mail.pm.org/mailman/listinfo/rio-pm



_______________________________________________
Rio-pm mailing list
Rio-pm em pm.org
http://mail.pm.org/mailman/listinfo/rio-pm 		 	   		  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120314/51f4b245/attachment-0001.html>


Mais detalhes sobre a lista de discussão Rio-pm