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:
Using perl Syntax Highlighting
- my $adress = 'hostname.com';
- my $MySocket=IO::Socket::INET->new(PeerPort=>28000,
- LocalPort=>28001,
- Proto=>'udp',
- PeerAddr=>$adress)
- or print "socket: $@\n";
- print "Socket created\n";
- print "Message: \n";
- my $msg=<STDIN>;
- $MySocket->send($msg)
- or print "cant send";
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
servidor:
Using perl Syntax Highlighting
- my $sock = IO::Socket::INET->new(LocalPort => $PORT,
- Proto => 'udp',
- ReuseAddr => 1)
- or print "socket: $@\n<br>";
- print "Listening for game servers on port $PORT\n<br>";
- $sock->recv(my $newmsg, $MAXLEN);
- my($port, $ipaddr) = sockaddr_in($sock->peername);
- my $gameserverIP = join(".", unpack("C4", $ipaddr));
- print "Mensaje enviado por $gameserverIP port $port\n";
- print "\nReceived message '", $newmsg,"'\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Gracias. Un saludo.