Página 1 de 1

Verificar conexión en IO Socket

NotaPublicado: 2017-03-28 16:14 @718
por BigBear
Hola. Estoy haciendo un cliente de UDP. El problema es que no puedo verificar cuándo se conecta y cuándo no.

"or die" funciona bien cuando el host no está, pero cuando la IP está bien y el puerto mal, entonces ocurre un falso positivo y continúa tratando de mandar paquetes.

Otra cosa. "or die" no me viene bien tampoco porque uso una función aparte llamada "printer" que usa colores y no puedo terminar el script mostrando el color.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.       $socket = IO::Socket::INET->new(
  2.               PeerAddr => "localhost",
  3.               PeerPort => "6668",
  4.               Proto => "udp");
  5.  
  6.       $socket or die "no socket :$!"; # necesito usar una función llamada printer
  7.  
  8.       if($socket->connected) {
  9.         while (1) {
  10.           # terminar llegando acá como si se hubiese conectado
  11.         }
  12.       } else {
  13.         printer("not connected"); #necesito que muestre este mensaje pero nunca funciona esta línea
  14.       }
  15.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


¿ Cómo soluciono este problema ?

Re: Verificar conexión en IO Socket

NotaPublicado: 2017-03-30 17:41 @779
por explorer
Creo que es la primera vez que oigo lo del falso positivo a la hora de conectar con sockets, pero bueno, no sé, podría ser.

En la página de Perl Monks donde se piden ejemplos con conexiones UDP, no hay muchas comprobaciones: http://www.perlmonks.org/?node_id=129521

Ahí se indica que hay un ejemplo en perldoc perlipc, pero... lo he visto y está a muy bajo nivel (usando Socket).

Sobre lo que comentas del die, nada te impide que llames a una subrutina antes de morir de verdad:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     $socket or
  2.         printer("no socket :$!") and die "Agg!";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4