por explorer » 2009-12-11 11:15 @510
Bien... la pregunta esencial se refiere a cómo es el protocolo...
* Tienes que enviar la palabra 'Consulta', pero, ¿es "Consulta" o "Consulta\n"? Tal como lo tienes ahora, estás enviando "Consulta".
* Por lo mismo, el servidor, cuando responde, ¿lo hace con un texto terminado en un carácter fin de línea?
* Además, ¿hay más comunicaciones a partir de ese momento?
Veo en la documentación de que IO::Sockect::INET de que a partir de la versión 1.18 viene con el autoflush() activado por defecto. Si no te fías, ponle
$sock->autoflush(1);
justo después de haber creado el objeto. Pon también
$|++;
al principio del programa, para hacer el autoflush también en la salida estándar.
El hecho de que el texto no salga hasta que cierras el servidor, es que éste sí que ha enviado el texto al Linux, pero el cliente en Linux no se ha enterado de que ha terminado de llegar el mensaje. Esto es lo que sucede cuando el servidor envía algo, pero el cliente espera algo que esté terminado en un carácter de fin de línea. En tu programa tienes puesto:
print scalar <$sock>;
Esa línea espera por un texto enviado por el $sock, que esté terminado en un carácter fin de línea. No te olvides de poner el $|++;.
El que esté hecho en Visual Basic, no importa, si está claro el protocolo. Eso quiere decir que tenemos que tener muy claros qué bytes se intercambian entre sí.
Actualización: el print() del Content-type no te sirve para nada, si ejecutas el programa desde la línea de comandos... porque ¿estás ejecutando el programa Perl desde la línea de comandos, verdad?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES