He leído el
paper (muy bueno por cierto) pero no he encontrado solución a lo que busco. Lo explicaré de la siguiente manera:
Servidor:
Using perl Syntax Highlighting
use strict
;
use IO
::Socket;
my($sock, $accept, $count);
$sock = IO
::Socket::INET->new( LocalPort
=> 10001,
Proto
=> 'tcp',
Listen
=> 6
,
Reuse
=> 1
) || die "Socket problem $!\n";
if ($sock)
{
$accept = $sock->accept();
while ($accept)
{
sleep 2;
print $accept "Hola $count\n";
$count++;
if ($count == 5
)
{
shutdown($accept,2
);
exit(1
);
}
}
}Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
Cliente:
Using perl Syntax Highlighting
use strict
;
use IO
::Socket;
my($sock, $in, $msg);
$sock = IO
::Socket::INET->new( PeerAddr
=> "127.0.0.1",
PeerPort
=> 10001,
Proto
=> 'tcp') || die "Socket problem $!\n";
while ($in = <$sock>)
{
print $in;
print "write: ";
chomp ($msg = <STDIN>);
print $sock $msg;
}
shutdown($sock,2
);Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Este código funciona de lo más bien, pero... al momento de conectar el cliente al servidor, recibirá la
info mandada por el
server ("Hola $count"), lo que en teoría debería llegar al cliente cada dos segundos. Con el cliente recibimos la
info y después el
script nos pregunta por
info para mandar al
server, pero si no introducimos
info en <STDIN>, la
info del
server no nos llegará incluso si pasan un millón de segundos, ya que el
script está a la espera de
info ingresada por el
user. Por lo tanto, mi objetivo es saber si hay alguna manera de evitar eso, imprimiendo la
info en pantalla cada dos segundos sin importar si el cliente ha ingresado o no la
info.