Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Server socket sin esperar retorno de línea

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Sab Jun 21, 2008 1:55 pm
nereha
Perlero Nuevo
Perlero Nuevo
Registrado: 21 Jun 2008
Mensajes: 1
Server socket sin esperar retorno de línea Responder citando

Hola chicos, soy nueva por aquí y vengo con el ánimo de si me podéis echar un cable; resulta que para un pequeño proyecto estoy realizando un servidor muy sencillo.
Básicamente tengo que aceptar una conexión entrante y recibir lo que otro dispositivo me envíe. Tengo un código bastante largo, pero en sí voy a pegar la esencia del problema. El servidor funciona correctamente pero solo recibo la cadena que el otro dispositivo me envía si la línea va acabada de la pulsación de INTRO.
La cuestión es que esté continuamente en escucha y si le doy a la letra A, pues que automáticamente reciba la A sin esperar al INTRO.
Creo que debe ser sencillo y concretamente en esta línea: while($_=$psock->getline) pero por más que leo, busco o cambio no consigo hacerlo funcionar.

Espero me puedan echar un cable, desde ya muy agradecida Wink

Perl:
#!/usr/bin/perl -w
use IO::Socket;
my $sock = IO::Socket::INET->new(Listen => 5,
                                 LocalAddr => '0.0.0.0',
                                 LocalPort => 1111,
                         Proto => 'tcp');
$sock->autoflush(1);

while(1) {
        my $psock = $sock->accept();
        warn "Accept from ",$psock->peerhost,"\n";
        $psock->print("Bienvenido\n");

        while($_=$psock->getline) {

                print $_;
                print $_;
                $psock->print("ok\n");
        }
        warn "Close from ",$psock->peerhost,"\n";
        $psock->close;
}
Mensaje Sab Jun 21, 2008 3:35 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 3841
Ubicación: Valladolid, España
Responder citando

Bienvenida a los foros de Perl en Español, nereha.

getline() espera una línea acabada en avance de línea. Debes usar getc() para leer un byte cada vez.

Mira este hilo. Busca por mi primer mensaje. En la segunda parte hay un ejemplo de cómo leer byte a byte.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group