[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Sockets en perl



Estoy intentando programar utilizando sockets en perl, para crear un
mini-servidorcito... Por ahora, me basta (para saber que mi prueba es
exitosa) que me mande de vuelta la cadena que yo escriba. Bueno, para esto
intente el siguiente programa: 

-------------------------------

#!/usr/bin/perl 
use IO::Socket;
$serverport=11450;

unlink "/tmp/mysock";
$server=IO::Socket::INET->new(LocalPort=>$serverport,
			      Type=>SOCK_STREAM,
			      Reuse=>1,
			      Listen=>10) or die "Couldn't be a TCP server
on port $serverport";
print "$! - $@";

while ($client = $server->accept()) {
    $client->send("Bienvenido!\n",$flags) or die "Can't send";
    $recv="";
    while ($recv eq "") {
	$client->recv($recv,$flags) or die "Can't recieve";
	print $client $recv;
    }
    $client->send($recv,$flags) or die "Can't send";
}

-------------------------------

Ahora, cuando me conecto a este socket pasa lo siguiente:

-------------------------------

[gwolf@localhost temp]$ ./daemon.pl &
[1] 964
[gwolf@localhost temp]$ telnet localhost 11450
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Bienvenido!
asd
da
gsd

^]
telnet> q
Connection closed.

-------------------------------

O sea, me manda correctamente la primera cadena (Bienvenido!), pero al
parecer no recibe (o no vuelve a mandar) lo demas. De hecho, si substituyo
el 

print $client $recv;

por

print $client "Dices que $recv";

me da una interminable cantidad de "Dices que" antes de que yo pueda
escribir nada.

Si lo cambio para que quede

print $client "Dices que $recv" if ($recv);

el comportamiento es identico al original.

Que estoy haciendo mal?

Gracias!

-------------------------------------------------------------------
NOTA - La UNAM se va a paro. Por favor, hasta que quede resuelto
el asunto, quien me quiera escribir hagalo a gwolf en chmd edu mx
-------------------------------------------------------------------
 Gunnar Wolf	gwolf en campus iztacala unam mx	   tel. 5623-1118
     Universidad Nacional Autónoma de México, Campus Iztacala
  Jefatura de Sección de Admon. de Sistemas y Telecomunicaciones
-------------------------------------------------------------------



[Hilos de Discusión] [Fecha] [Tema] [Autor]