• 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.

Sockets en Perl: No puede conectar

Notapor alqui » 2007-09-17 13:16 @594

Estoy intentando aprender por encima cómo programar Sockets en perl y no me funciona ni tan solo el programa ejemplo más simple que he encontrado:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use IO::Socket;
$sender = new IO::Socket::INET (
    PeerAddr => 'localhost' ,
    PeerPort => 1999,
    Proto    => 'tcp',
);
die "No se puede abrir el socket, Motivo: $!\n" unless $sender;
print $sender "MSG : enviando mi mensaje\n";
close $sender;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Para probarlo, por un lado abro una escucha en el puerto 1999 con netcat:

Código: Seleccionar todo
[jordi@baby0 ~]$ netcat -l -p 1999


Y por otro lado ejecuto el programa y me da este error:

Código: Seleccionar todo
[jordi@baby0 ~]$ ./socketpr2
No se puede abrir el socket, Motivo: No existe el fichero o el directorio
[jordi@baby0 ~]$


¿Dónde está el fallo?

Gracias.
alqui
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2007-09-17 13:12 @591

Publicidad

Notapor explorer » 2007-09-17 13:36 @608

Bienvenido a los foros de Perl en Español, alqui.

A mí sí que me funciona. Y ejecutándolo como usuario normal. El netcat recoge el mensaje y termina.

¿El sistema sabe resolver la palabra 'localhost'? ¿Tu usuario tiene permisos para conectarse al puerto 1999?
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-17 15:27 @685

Hola explorer, gracias por responder.

explorer escribiste:¿El sistema sabe resolver la palabra 'localhost'?

El sistema sabe resolver "localhost". Además si sustituyo 'localhost' por '127.0.0.1' tampoco me funciona.

explorer escribiste:¿Tu usuario tiene permisos para conectarse al puerto 1999?

Aunque no se donde se definen los permisos para conectarse a un puerto, me imagino que mi usuario tiene esos permisos, ya que si en vez de usar mi programa uso telnet o netcat si que puedo. Además he probado ejecutar el programa como root y tampoco funciona.
alqui
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2007-09-17 13:12 @591

Notapor explorer » 2007-09-17 15:51 @702

¿Qué versión de Perl tienes? Haz un perl -V y nos lo mandas.
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-17 16:25 @726

Código: Seleccionar todo
[jordi@baby0 ~]$ perl -V
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
  Platform:
    osname=linux, osvers=2.6.20-arch, archname=i686-linux-thread-multi
    uname='linux wohnung 2.6.20-arch #1 smp preempt sat mar 10 10:12:25 cet 2007 i686 amd athlon(tm) xp 2200+ authenticamd gnulinux '
    config_args='-des -Dprefix=/usr -Dinstallprefix=/usr -Dman1dir=/usr/man/man1 -Dman3dir=/usr/man/man3 -Doptimize=-march=i686 -O2 -pipe -Dusethreads'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define use5005threads=undef useithreads=define usemultiplicity=define
    useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
    use64bitint=undef use64bitall=undef uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-march=i686 -O2 -pipe',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include'
    ccversion='', gccversion='4.1.2', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -L/usr/local/lib'
    libpth=/usr/local/lib /lib /usr/lib
    libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
    perllibs=-lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
    libc=/lib/libc-2.5.so, so=so, useshrplib=false, libperl=libperl.a
    gnulibc_version='2.5'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'


Characteristics of this binary (from libperl):
  Compile-time options: MULTIPLICITY PERL_IMPLICIT_CONTEXT
                        PERL_MALLOC_WRAP THREADS_HAVE_PIDS USE_ITHREADS
                        USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API
  Built under linux
  Compiled at Mar 12 2007 19:08:43
  @INC:
    /usr/lib/perl5/5.8.8/i686-linux-thread-multi
    /usr/lib/perl5/5.8.8
    /usr/lib/perl5/site_perl/5.8.8/i686-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.8
    /usr/lib/perl5/site_perl/5.8.7/i686-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.7
    /usr/lib/perl5/site_perl/5.8.6/i686-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.6
    /usr/lib/perl5/site_perl/5.8.5/i686-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.5
    /usr/lib/perl5/site_perl/5.8.4/i686-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.4
    /usr/lib/perl5/site_perl/5.8.3/i686-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.3
    /usr/lib/perl5/site_perl/5.8.2/i686-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.2
    /usr/lib/perl5/site_perl/5.8.1/i686-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.1
    /usr/lib/perl5/site_perl/5.8.0/i686-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.0
    /usr/lib/perl5/site_perl
    .
[jordi@baby0 ~]$ 
alqui
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2007-09-17 13:12 @591

Notapor explorer » 2007-09-17 17:14 @759

Salvo detalles menores, es casi igual que el mío...

Pues no lo sé... no sé por qué no te funciona...
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 monoswim » 2007-09-18 06:54 @329

¿No habrá un firewall bloqueando esa conexión por ese puerto...?

Aunque sea localmente, tal vez esté molestando...

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor alqui » 2007-09-18 07:10 @340

No... en este momento no uso ningún firewall. Además, si en vez de usar el programa uso telnet o netcat como cliente, si que puedo hacer una conexión local en el puerto 1999.

Es muy raro... no se que será... que a todos os funcione y en cambio a mi no....
alqui
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2007-09-17 13:12 @591

Notapor explorer » 2007-09-18 08:33 @398

¿Tienes la última versión del módulo?
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 10:17 @470

A ver si me aclaro:

Creo (no estoy seguro) que tengo la versión 1.29.

De todos modos, para instalar ese módulo, tengo que hacer esto ¿verdad?

Código: Seleccionar todo
cpan -i IO::Socket


Pues cuando lo hago, parece que me da error:

Código: Seleccionar todo
CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
  Database was generated on Sat, 08 Sep 2007 23:36:41 GMT
Running install for module IO::Socket
Running make for G/GB/GBARR/IO-1.2301.tar.gz
CPAN: Digest::MD5 loaded ok
Checksum for /root/.cpan/sources/authors/id/G/GB/GBARR/IO-1.2301.tar.gz ok
Scanning cache /root/.cpan/build for sizes
IO-1.2301/
IO-1.2301/IO/
IO-1.2301/IO/Handle.pm
IO-1.2301/IO/Socket.pm
IO-1.2301/IO/Socket/
IO-1.2301/IO/Socket/INET.pm
IO-1.2301/IO/Socket/UNIX.pm
IO-1.2301/IO/Pipe.pm
IO-1.2301/IO/Poll.pm
IO-1.2301/IO/Seekable.pm
IO-1.2301/IO/Dir.pm
IO-1.2301/IO/Select.pm
IO-1.2301/IO/File.pm
IO-1.2301/t/
IO-1.2301/t/io_dup.t
IO-1.2301/t/io_const.t
IO-1.2301/t/io_dir.t
IO-1.2301/t/io_poll.t
IO-1.2301/t/io_file.t
IO-1.2301/t/io_sel.t
IO-1.2301/t/io_tell.t
IO-1.2301/t/test.pl
IO-1.2301/t/io_sock.t
IO-1.2301/t/io_multihomed.t
IO-1.2301/t/io_taint.t
IO-1.2301/t/io_udp.t
IO-1.2301/t/io_unix.t
IO-1.2301/t/io_pipe.t
IO-1.2301/t/io_linenum.t
IO-1.2301/t/io_xs.t
IO-1.2301/t/io_utf8.t
IO-1.2301/t/IO.t
IO-1.2301/poll.h
IO-1.2301/MANIFEST
IO-1.2301/IO.xs
IO-1.2301/META.yml
IO-1.2301/ChangeLog
IO-1.2301/poll.c
IO-1.2301/IO.pm
IO-1.2301/Makefile.PL
IO-1.2301/README
IO-1.2301/SIGNATURE
Removing previously used /root/.cpan/build/IO-1.2301

  CPAN.pm: Going to build G/GB/GBARR/IO-1.2301.tar.gz

Checking if your kit is complete...
Looks good
Writing Makefile for IO
cp IO/Handle.pm blib/lib/IO/Handle.pm
cp IO/Dir.pm blib/lib/IO/Dir.pm
cp IO/Socket/INET.pm blib/lib/IO/Socket/INET.pm
cp IO/Poll.pm blib/lib/IO/Poll.pm
cp IO/Seekable.pm blib/lib/IO/Seekable.pm
cp IO/Pipe.pm blib/lib/IO/Pipe.pm
cp IO/Socket.pm blib/lib/IO/Socket.pm
cp IO/Select.pm blib/lib/IO/Select.pm
cp IO/File.pm blib/lib/IO/File.pm
cp IO.pm blib/lib/IO.pm
cp IO/Socket/UNIX.pm blib/lib/IO/Socket/UNIX.pm
/usr/bin/perl /usr/lib/perl5/5.8.8/ExtUtils/xsubpp  -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap  IO.xs > IO.xsc && mv IO.xsc IO.c
cc -c   -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -march=i686 -O2 -pipe   -DVERSION=\"1.23\" -DXS_VERSION=\"1.23\" -fpic "-I/usr/lib/perl5/5.8.8/i686-linux-thread-multi/CORE"   IO.c
cc -c   -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -fno-strict-aliasing -pipe -Wdeclaration-after-statement -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -march=i686 -O2 -pipe   -DVERSION=\"1.23\" -DXS_VERSION=\"1.23\" -fpic "-I/usr/lib/perl5/5.8.8/i686-linux-thread-multi/CORE"   poll.c
Running Mkbootstrap for IO ()
chmod 644 IO.bs
rm -f blib/arch/auto/IO/IO.so
cc  -shared -L/usr/local/lib IO.o poll.o  -o blib/arch/auto/IO/IO.so    \
                \

chmod 755 blib/arch/auto/IO/IO.so
cp IO.bs blib/arch/auto/IO/IO.bs
chmod 644 blib/arch/auto/IO/IO.bs
Manifying blib/man3/IO::Dir.3
Manifying blib/man3/IO::Handle.3
Manifying blib/man3/IO::Socket::INET.3
Manifying blib/man3/IO::Poll.3
Manifying blib/man3/IO::Pipe.3
Manifying blib/man3/IO::Seekable.3
Manifying blib/man3/IO::Socket.3
Manifying blib/man3/IO::Select.3
Manifying blib/man3/IO::File.3
Manifying blib/man3/IO::Socket::UNIX.3
Manifying blib/man3/IO.3
  /usr/bin/make  -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/IO...............ok
t/io_const.........ok
t/io_dir...........ok
t/io_dup...........ok
t/io_file..........ok
t/io_linenum.......ok
t/io_multihomed....No existe el fichero o el directorio at t/io_multihomed.t line 85.
t/io_multihomed....dubious
        Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 1-8
        Failed 8/8 tests, 0.00% okay
t/io_pipe..........ok
t/io_poll..........ok
t/io_sel...........ok
t/io_sock..........No existe el fichero o el directorio at t/io_sock.t line 41.
t/io_sock..........dubious
        Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 1-26
        Failed 26/26 tests, 0.00% okay
t/io_taint.........ok
t/io_tell..........ok
t/io_udp...........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.
t/io_udp...........dubious
        Test returned status 2 (wstat 512, 0x200)
DIED. FAILED tests 1-7
        Failed 7/7 tests, 0.00% okay
t/io_unix..........ok
t/io_utf8..........ok
t/io_xs............ok
Failed Test       Stat Wstat Total Fail  Failed  List of Failed
-------------------------------------------------------------------------------
t/io_multihomed.t    2   512     8   16 200.00%  1-8
t/io_sock.t          2   512    26   52 200.00%  1-26
t/io_udp.t           2   512     7   14 200.00%  1-7
Failed 3/17 test scripts, 82.35% okay. 41/172 subtests failed, 76.16% okay.
make: *** [test_dynamic] Error 255
  /usr/bin/make test -- NOT OK
Running make install
  make test had returned bad status, won't install without force


*Sean comprensivos: tengo que reconocer que no tengo mucha idea de Perl... Por un lado estoy aprendiendo Perl prácticamente desde 0, pero por otro lado me urge usarlo para probar cosas con sockets.
alqui
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2007-09-17 13:12 @591

Siguiente

Volver a Intermedio

¿Quién está conectado?

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