[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