[Duda]Sockets en perl.

Iniciado por volteo0101, 12 Enero 2011, 12:05 PM

0 Miembros y 1 Visitante están viendo este tema.

volteo0101

Buenas noches, estaba necesitando enviar muchos sockets a un mismo puerto .

Código (perl) [Seleccionar]

#!/usr/bin/perl
use IO::Socket::INET;
while($x<=$slot)
{
IO::Socket::INET->new( PeerAddr => "$ip",
PeerPort => "$puerto" ,
Proto => "tcp");
print "Enviado";
$x++;
}



parte del codigo es este..

El tema es que creo que envia simpre el mismo socket,yo necesito enviar distintos sockets al puerto .

las variables , $puerto y $ip son pasadas por <STDIN>

Alguien me podria decir como puedo hacer un array con muchos sockets ? o alguna forma de enviar muchos sockets distintos a un msimo puerto sin ningun tipo de informacion,solo necesito que conecten.

Desde ya muchas gracias .

PD : Este script corre correctamente, pero no pude tener los mismos resultados que tube con un visualbasic que programe , que mandaba con un arreglo de winsock muchos sockets al mismo puerto.


EDIT : Acabo de hacer unas pruebas con netstat -a , en el perl solo conecta 1 socket al puerto , en cambio cuando uso mi visualbasic con arreglos de winsock conecta mas de 300 ..alguien puede ayudarme a hacer conectar muchos sockets ? saludos.

Novlucker

#1
Prueba con esto, no puedo probar ahora y hace mucho que no uso perl

Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

volteo0101

Cita de: Novlucker en 13 Enero 2011, 11:05 AM
Prueba con esto, no puedo probar ahora y hace mucho que no uso perl

Saludos

Em nop , estuve viendo el enlace y el codigo ,pero el que codigo ese exploit cierra el sockets, y yo tengo que mantenerlo conectado mientras conecto otros.

Novlucker

Es verdad no había prestado atención, entonces usa threads

Saludos

P.D: no se que tiene eso de exploit
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

WHK

mira, hace tiempo hize este script, talves te sirva, utilizé forks para crear funciones que conectan el socket:

Código (perl) [Seleccionar]
#!/usr/bin/perl
#Perl-xxxx Traducción en perl del originalmente xxxxx.

use IO::Socket;

# Variables ==========================
if((!$ARGV[0]) and (!$ARGV[1]) and (!$ARGV[2])) {
print "Uso: $0 [Host] [Puerto] [Nº de Sockets] [protocolo(por defecto TCP)]
Ejemplo 1: $0 xxxx.net 80 1700
Ejemplo 2: $0 xxxx.com 21 1000
Ejemplo 3: $0 xxxx.org 69 1500 UDP
";
exit(1);
} else {
if (!$ARGV[3]) {
  $protocolo = "TCP";
} else {
  $protocolo = $ARGV[3];
}
$cuenta_errores = "1";
# ====================================

# Función conectar ==================================
sub conectar {
  $conectar =  new IO::Socket::INET(PeerAddr => $ARGV[0], PeerPort => $ARGV[1], Proto => $protocolo)or exit(1);
  while (<$conectar>) {}
}
# ===================================================

# Conectar ==========================================
print "[*] $ARGV[2] Sockets cargados.\n";
print "[*] Conectando Sockets...\n";
for (1 .. $ARGV[2]) {
  next if my $kid = fork;
  die "fork: $!" unless defined $kid;
  while() {conectar;}
  exit;
}
$conectados = ($ARGV[2]-$cuenta_errores)+1;
$desconectados = $cuenta_errores-1;
print "[*] Sockets conectados.\n";
# ===================================================

# Espera el termino de fork para concluir ===========
1 while wait != -1;
print "[*] Terminado.\n";
}
exit(0);
# ===================================================

volteo0101

Muchas gracias a todos , voy a probar si funciona y les digo .

Hasta la proxima!