[Cascavel-pm] Multiplas portas em IO::Socket::INET

breno oainikusama em gmail.com
Quarta Julho 14 22:36:17 PDT 2010


Oi Agnaldo,

Desculpa, estou viajando e só vi sua mensagem agora. Não sei se vc já
descobriu isso sozinho, mas existe uma diferença entre (a) se associar
a uma ou mais portas criando diferentes sockets; e (b) escutar tráfego
direto na interface, em tantas portas quanto quiser - mas sem
associar-se a nenhuma dessas portas.

Para (a), bem, vc pode criar tantos sockets quanto quiser. Apenas
evite usar a notação indireta para objetos, como "new
IO::Socket::INET". A forma IO::Socket::INET->new evita erros e deixa
seu código Perl mais claro.

Para (b), você pode usar a libpcap e monitorar sua interface de rede
em quantas portas quiser usando as regras da lib. Veja Net::Pcap ou
uma interface mais amigável, como a Net::Pcap::Easy:

http://search.cpan.org/perldoc?Net::Pcap
http://search.cpan.org/perldoc?Net::Pcap::Easy

Boa sorte! Qq coisa grita :-)

[]s

-b

2010/7/10 Agnaldo Macedo <agnaldo em starweb-software.com.br>:
>
> Estou usando algo como o código abaixo para ler uma porta.
> Minha dúvida.
> Tem como ler uma faixa de portas?
>
>
> use warnings;
> use strict;
> use IO::Socket;
>
> $| = 1;
>
> my $porta    = '9999';
> my $telefone = '999999999999';
> my $retorno  = '';
> my $linha    = '';
> my $new_sock = '';
>
> my $DIRTEMP = 'c:/temp/log';
> my $arquivo = $DIRTEMP."/arquivo.log";
>
> my $sock = new IO::Socket::INET (
>      LocalPort => $porta,
>      Type      => SOCK_STREAM,
>      Proto     => 'tcp',
>      Listen    => 10
> );
> die "Não consegui iniciar o servidor: $!\n" unless $sock;
> print "Servidor iniciado ...\n";
>
> while (my $new_sock = $sock->accept())
>    {
>       while(my $data = <$new_sock>)
>          {
>             (my $sec,my $min,my $hour,my $mday,my $mon,my $year,my $wday,my
> $yday,my $isdst)=localtime(time);
>             my $dataHoraT = sprintf("%4d-%02d-%02d %02d:%02d:%02d",($year +
> 1900),($mon + 1),$mday,$hour,$min,$sec);
>             my $dataHoraA = sprintf("%4d-%02d-%02d|%02d:%02d:%02d",($year +
> 1900),($mon + 1),$mday,$hour,$min,$sec);
>
>             print $dataHoraT.' '.$telefone."\n";
>
>             open (OUTFILE,">>$arquivo");
>             print OUTFILE $dataHoraA.'|'.$telefone.'|'.$data."\n";
>             close (OUTFILE);
>
>             $data     = 'NULO';
>             $new_sock = 'NULO';
>          }
>    }
> close($sock);
>
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>


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