Mi problema no es exactamente con Perl aunque tiene relación.
Pretendo aprender (por hobby) a usar Perl, principalmente para programar aplicaciones de Internet: robots para automatizar mi uso de Internet, comunicación entre ordenadores, sockets... etc. Una de las primeras cosas que se me han ocurrido es programar una especie de Tcpdump en Perl.
Para aprender, he descargado varios programas de ejemplo en Perl y los he ejecutado y resulta que todos los que conectan fuera de mi ordenador funcionan bien, pero en cuanto uso localhost me rechaza la conexión. telnet localhost me responde con connection refused para cualquier puerto. Y he llegado a la conclusión de que el problema es que tengo todos los puertos cerrados. Tanto en Windows como en Ubuntu me pasa lo mismo: connection refused. En casa tengo una LAN con varios ordenadores y en todos me pasa lo mismo. No tengo firewall activados ni en Windows ni en Ubuntu. Probé a abrir puertos en el router (NAT) hacia mi IP... nada. En el router tampoco tengo configurado ningún firewall ni filtro de contenido...
Sin embargo, el tcpdump sí parece funcionar. Copié una pequeña aplicación que usa NET::DNS para obtener la dirección dns de una pagina web y cuando la lanzo y en otra terminal ejecuto tcpdump udp dst port 53 -c 1 me captura el paquete UDP.
En resumen, que me quiero conectar a puertos de mi propio ordenador y no hay manera ¿alguna idea? ¿qué sentido tiene que mi propio ordenador no me permita conectar a sus puertos?
Una última pregunta ¿cuando hago telnet localhost, la petición va primero al router y del router a mi ordenador? Porque si es así tiendo a pensar que mi problema está en el router.
¿Me puede ayudar alguien?