Sab Jun 21, 2008 1:55 pm
|
 |
nereha
Perlero Nuevo

|
Registrado: 21 Jun 2008
Mensajes: 1
|
|
| Server socket sin esperar retorno de línea |
|
|
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
| 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;
} |
|
|
|
|

Sab Jun 21, 2008 3:35 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 3841
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|
Powered by phpBB © 2001, 2005 phpBB Group
|