[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