• Publicidad

Verificar conexión en IO Socket

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

Verificar conexión en IO Socket

Notapor BigBear » 2017-03-28 16:14 @718

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 ?
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Verificar conexión en IO Socket

Notapor explorer » 2017-03-30 17:41 @779

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
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

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