[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