[Cascavel-pm] Sockets

Luis Campos de Carvalho lechamps em terra.com.br
Terça Maio 27 14:36:27 CDT 2003


Ednardo Lobo wrote:
>     Bom,  ao que  parece a  comunicação  entre servidor  e cliente  está
> perfeita. Verifique se  você está ecoando as  mensagens e finalizando-as
> com '\n', pois  esse caracter, em muitos casos, força  o esvaziamento de
> qualquer buffer.
> 
>     É só um palpite, mas verifique!!

   Ednardo, Alcir

   Eu não recebi a mensagem original, mas de acordo com o que veio aqui, 
parece que você pode melhorar bastante a sua performance ajustando 
corretamente o Auto-Flush dos seus filehandles. Alguma informação útil 
pode ser encontrada na manpage perlvar, sob o título OUTPUT_AUTOFLUSH.

   Como TIMTOWTDI [0], vamos tentar duas vezes:

   # isso seta o autoflush do
   # filehandle armazenado em $socket
   # sem alterar o seu filehandle default.
   use IO::Socket;
   $socket = new IO::Socket;
   select shift ( select $socket, $| = 1 );

   ou assim:

   use IO::Socket;
   use English;
   $socket = new IO::Socket;
   select shift ( select $socket, $OUTPUT_AUTOFLUSH );

   ou assim:

   use IO::Socket;
   $socket = new IO::Socket;
   $socket->autoflush( 1 );

   A manpage do IO::Socket diz que a partir da versao 1.18 todos os 
objetos IO::* vem com AUTO_FLUSH ligado por default. Confira se você 
está com uma versão legal, atualize se for o caso, ou sete AUTOFLUSH à 
máo conforme as conveniências.

   Eu havia acabado de escrever este trecho quando o Alcir mandou o 
email com o cliente e o servidor. Vejo que está tudo em ordem no quesito 
"autoflush". =-]

   *********************************

   Agora vamos olhar do outro lado:

   Para ter controle do terminal com granularidade de um caracter, você 
vai precisar do Term::ReadKey. Não é um módulo complicado. Você não 
dever ter problemas depois de ler a documentação.

   Eu testei o seu cliente / servidor aqui, e para mim ele funciona 
perfeitamente: eu escrevo, ele responde, sempre enviando uma mensagem 
depois de ver um "\n" na entrada de dados.

   Não consegui reproduzir o problema de vocês.
   Ah! Aqui é um Debian / Linux com Kernel 2.2.20. Deve ser BEM 
diferente de rodar no rWindows... nada pessoal. =-]

   Espero que isso ajude.
   []'z!

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   Luis Campos de Carvalho
   Computer Scientist,
   Unix Sys Admin & Certified Oracle DBA
   http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

[0]: There Is More Than One Way To Do It, the Perl motto.




Mais detalhes sobre a lista de discussão Cascavel-pm