Tengo el siguiente código, para buscar posible puertos abiertos y crear conexiones.
Using perl Syntax Highlighting
- sub vncscan {
- my ($ip) = (shift);
- my $ok = 0;
- for ( ; $i < 13; $i++ ) {
- $SIG{ALRM} = sub { print "alarm\n"; };
- my $vnc = IO::Socket::INET->new( Proto => "tcp", PeerAddr => $ip, PeerPort => $port[$i], Type => SOCK_STREAM );
- alarm(2);
- if (<$vnc>) {
- my $info = <$vnc>;
- print $socket "PRIVMSG $temp[2] <img src="http://perlenespanol.com/foro/images/smilies/icon_razz.gif" alt=":P" title="Razz" />uerto $port[$i] abierto INFo => $info\n";
- close($vnc);
- $ok++;
- }
- elsif ( !<$vnc> ) {
- close($vnc);
- }
- elsif ( $@ eq "alarm" ) {
- print $socket "PRIVMSG $temp[2] :¡Tiempo de espera agotado! Puerto $port[$i] Fuera de alcance.\n";
- }
- else {
- $i++;
- }
- }
- print $socket "PRIVMSG $temp[2] :Termina el scaneo para $i puerto(s), encontrando $ok puerto(s) abiertos.\n";
- $i = 0;
- }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
El tema es que, en algunos puertos se me cuelga y demora demasiado en dar respuesta. ¿Podría dar una especie de Timeout? Para que espere la conexión por un máximo de dos segundos; de no serlo, cierre y continúe con el puerto siguiente.