• Publicidad

Sockets en Perl: No puede conectar

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Notapor explorer » 2007-09-18 10:55 @496

Pues vaya... te da el MISMO error que en tu programa:
Código: Seleccionar todo
No existe el fichero o el directorio (maybe your system does not have a localhost at all, 'localhost' or 127.0.0.1) at t/io_udp.t line 58.


Vamos, que desde dentro de Perl no se sabe qué máquina es 'localhost'.

¿Está definida en el fichero /etc/hosts o en el dns local?
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

Publicidad

Notapor alqui » 2007-09-18 11:00 @500

Sí que está definido:

Código: Seleccionar todo
[jordi@baby0 ~]$ cat /etc/hosts
#
# /etc/hosts: static lookup table for host names
#

#<ip-address>   <hostname.domain.org>   <hostname>
127.0.0.1               localhost.localdomain   localhost
192.168.1.2             bayby0.baby             baby0
192.168.1.1             router.baby             router
192.168.1.3             baby1.baby              baby1
# End of file


De hecho el sistema sí que me reconoce localhost (excepto Perl, según parece). Por ejemplo, como he dicho, puedo hacer:

Código: Seleccionar todo
telnet localhost 1999
alqui
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2007-09-17 13:12 @591

Notapor explorer » 2007-09-18 12:08 @547

¿Has hecho la instalación del módulo siendo root, verdad?

Otra cosa distinta: ¿No se estará ejecutando /usr/bin/perl en una jaula chroot?
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

Notapor alqui » 2007-09-18 12:34 @565

explorer escribiste:Has hecho la instalación del módulo siendo root, verdad?


Si, si.. lo he intentado instalar como root.

explorer escribiste:Otra cosa distinta: ¿No se estará ejecutando /usr/bin/perl en una jaula chroot?


No. El chroot no lo suelo usar. Solo recuerdo haberlo usado en alguna ocasión muy puntual para arreglar algún fallo grave del sistema, pero no es el caso.
alqui
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2007-09-17 13:12 @591

Notapor explorer » 2007-09-18 12:38 @568

Prueba esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
perl -e 'print `ping localhost`'
Coloreado en 0.006 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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor alqui » 2007-09-18 13:41 @612

No me responde el ping (se queda esperando). Pero no lo hace, tanto si lo hago a localhost, como si lo hago a 127.0.0.1, como a 192.168.1.1 (mi router), como a google.es, etc....
alqui
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2007-09-17 13:12 @591

Notapor explorer » 2007-09-18 13:56 @622

Ya tenemos una pista.

El ejecutar el 'ping' dentro de las comillas invertidas significa que lo estamos ejecutando con un /bin/sh.

Ahora hay que ver porqué el ping se comporta de forma distinta al ser ejecutado dentro de Perl y fuera de él.
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

Notapor alqui » 2007-09-18 15:18 @679

¿Qué curioso, no? Pues si hago lo que dices con cualquier otro comando, me funciona. Por ejemplo:

Código: Seleccionar todo
[jordi@baby0 ~]$ perl -e 'print `pwd`'
/home/jordi
[jordi@baby0 ~]$


Pero en cambio el ping no funciona dentro de Perl.

Pero en cambio fuera de Perl sí:

Código: Seleccionar todo
[jordi@baby0 ~]$ echo ping localhost| /bin/sh
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.051 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.053 ms

--- localhost.localdomain ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.051/0.052/0.053/0.000 ms


Aunque en realidad el que se encarga de hacer el ping siempre sería el programa ping dentro de /bin/sh. Perl solo haría de "intermediario" y en cambio en el caso del <<perl -e 'print `pwd`'>> lo hace bien el papel de "intermediario". ¿Qué raro, no?
alqui
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2007-09-17 13:12 @591

Notapor explorer » 2007-09-18 15:37 @692

Lo más seguro que el sh que ejecuta perl dentro de sí estará sometido a la misma disciplina que el propio perl.

Yo apuesto a que el ejecutable de perl está 'enjaulado'.

Dinos qué sistema operativo estás usando. Marca y modelo.
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

Notapor alqui » 2007-09-18 15:44 @697

Uso Arch Linux. Hace poco lo actualicé a su versión actual "Don't Panic" haciendo un "pacman -Syu", que sería como hacer un "apt-get update && apt-get dist-upgrade" en Debian.
alqui
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2007-09-17 13:12 @591

AnteriorSiguiente

Volver a Intermedio

¿Quién está conectado?

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

cron