Tengo una consulta básica sobre IO::Socket, mandé por equivocación un mensaje hace poco sobre esta consulta por error al Foro Experto, por lo cual pido disculpas ya que tuve que haberlo publicado aquí en Básico...
He estado intentando un script que sea capaz de enviar mensajes a uno o varios clientes previamente conectados a un servidor; he tomado prestado de este mismo foro los códigos con los cuales estoy probando y van así:
Servidor:
Using perl Syntax Highlighting
use IO::Socket::INET;
my $socket = new IO::Socket::INET(Proto => "udp",
LocalAddr => "localhost",
LocalPort => 3000,
PeerAddr => "localhost",
PeerPort => 3001,
Timeout => 10)
|| die "failed";
while (1) {
my $msg = <$socket>;
while (<STDIN>) {
my $serverchat = <STDIN>;
chomp $msg;
#print "Mensaje Recibido...\n";
print $socket "$serverchat\n";
}
}
my $socket = new IO::Socket::INET(Proto => "udp",
LocalAddr => "localhost",
LocalPort => 3000,
PeerAddr => "localhost",
PeerPort => 3001,
Timeout => 10)
|| die "failed";
while (1) {
my $msg = <$socket>;
while (<STDIN>) {
my $serverchat = <STDIN>;
chomp $msg;
#print "Mensaje Recibido...\n";
print $socket "$serverchat\n";
}
}
Coloreado en 0.019 segundos, usando GeSHi 1.0.8.4
Cliente:
Using perl Syntax Highlighting
use IO::Socket::INET;
my $socket = new IO::Socket::INET(Proto => "udp",
LocalAddr => "localhost",
LocalPort => 3001,
PeerAddr => "localhost",
PeerPort => 3000,
Timeout => 10)
|| die "failed";
print $socket "1\n";
while (1) {
my $msg = <$socket>;
chomp $msg;
print "$msg\n";
}
my $socket = new IO::Socket::INET(Proto => "udp",
LocalAddr => "localhost",
LocalPort => 3001,
PeerAddr => "localhost",
PeerPort => 3000,
Timeout => 10)
|| die "failed";
print $socket "1\n";
while (1) {
my $msg = <$socket>;
chomp $msg;
print "$msg\n";
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Lo que está pasando es que el mensaje sí pasa al/a los clientes pero con un "ENTER en blanco", es decir, no pasan uno a uno según se vayan poniendo en <STDIN>... Agradeceré mucho si pueden darme una manita con esto y si en alguno de mis post anteriores incumplí con alguna regla de la netiqueta del foro, ¡pido mil disculpas!
Saludos a todos.