• Publicidad

Problema con sockets

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Problema con sockets

Notapor resetado » 2011-03-23 08:11 @382

Hola,

He hecho dos sencillos scripts cliente y servidor en los que el cliente manda un mensaje al servidor. Cuando creo el socket en el servidor, le digo que utilice el puerto 28001 para comunicarse (estableciendo la variable LocalPort). Una vez llega al servidor, imprimo la IP y el puerto desde el que el cliente ha mandado el mensaje, pero el puerto es otro totalmente diferente. ¿Alguien sabe por qué cambia el puerto desde el que se envía? Tengo los puertos abiertos en el router, así que no sé qué puede ser...

El código del cliente y del servidor es el siguiente

cliente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $adress = 'hostname.com';
  2. my $MySocket=IO::Socket::INET->new(PeerPort=>28000,
  3.                 LocalPort=>28001,
  4.         Proto=>'udp',
  5.         PeerAddr=>$adress)
  6.         or print "socket: $@\n";
  7.  
  8. print "Socket created\n";
  9. print "Message: \n";
  10. my $msg=<STDIN>;
  11.  
  12. $MySocket->send($msg)
  13. or print "cant send";
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


servidor:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $sock = IO::Socket::INET->new(LocalPort => $PORT,
  2.                                 Proto => 'udp',
  3.                                 ReuseAddr => 1)
  4.   or print "socket: $@\n<br>";
  5.  
  6. print "Listening for game servers on port $PORT\n<br>";
  7.  
  8. $sock->recv(my $newmsg, $MAXLEN);
  9. my($port, $ipaddr) = sockaddr_in($sock->peername);
  10. my $gameserverIP = join(".", unpack("C4", $ipaddr));
  11. print "Mensaje enviado por $gameserverIP port $port\n";
  12. print "\nReceived message '", $newmsg,"'\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Gracias. Un saludo.
resetado
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-03-23 07:59 @374

Publicidad

Re: Problema con sockets

Notapor explorer » 2011-03-24 13:47 @616

Bienvenido a los foros de Perl en Español, resetado.

No se trata de un problema de Perl, sino de algo inherente al funcionamiento del protocolo TCP. Si quieres, puedes profundizar más en el tema, pero será consultando la documentación del protocolo.

En términos prácticos (y salvo que me esté equivocando): el servidor siempre está escuchando por un determinado puerto (de entrada), pero cuando se realiza la conexión con un cliente, la información sale por otro puerto (de salida).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con sockets

Notapor resetado » 2011-03-25 05:33 @273

Hola,

Sí, suponía que no tendría que ver con Perl, pero pregunté por si acaso alguien sabía por qué sucedía eso.

Gracias por la respuesta. Un saludo.
resetado
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2011-03-23 07:59 @374


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 43 invitados