[firebase-br] OFF: Tempo de espera por resposta do servidor ao tentar conectar.
Gianclaudio Oliveira
gianclaudiooliveira em yahoo.com.br
Sex Jun 9 05:30:16 -03 2006
Esse lance do thread eu não entendi muito bem. Mas a questão do ping era uma idéia que eu havia pensado e tentaria levar pra frente se não encontrasse outra saída. Agora que sei que outro companheiro já a utilizou, fico tranquilo de que dará certo.
O tráfego na rede com os pings não chega a ser problema. Até porque não preciso ficar tentando conectar o tempo todo. E mesmo que tentasse, a rede estaria sendo usada quase exclusivamente pra isso e o volume de dados de um ping é muito pequeno (que eu saiba).
Creio que o meio problema esteja resolvido :-))
Muito obrigado mesmo, do fundo do coração. Vocês são maravilhosos!!
Grande abraço
Daniel / Tecnobyte <temp em tecnobyte.com.br> escreveu: As funções abaixo usam Indy e faço algo parecido com isto que você está
precisando. Sempre dou ping no servidor e na porta do FB antes de tentar a
conexão de fato com o banco.
function ExPing(const Host: string; const TimeOut: Integer): Boolean;
var
ICMPClient: TIdICMPClient;
begin
Result := false;
ICMPClient := TIdICMPClient.Create(nil);
try
try
ICMPClient.Host := Host;
ICMPClient.ReceiveTimeout := TimeOut;
ICMPClient.Ping;
Result := ICMPClient.ReplyStatus.ReplyStatusType = rsEcho;
except
end;
finally
ICMPClient.Free;
end;
end;
function ExPingPort(const Host: string; const Port, TimeOut: Integer):
Boolean;
var
TCPClient: TIdTCPClient;
begin
TCPClient := TIdTCPClient.Create(nil);
try
try
TCPClient.Host := Host;
TCPClient.Port := Port;
TCPClient.ConnectTimeout := TimeOut;
TCPClient.Connect;
Result := TCPClient.Connected;
except
Result := false;
end;
finally
TCPClient.Free;
end;
end;
Atenciosamente.
Daniel P. Guimarães
Tecnobyte Informática
www.tecnobyte.com.br
----- Original Message -----
From: "Pedro"
To: "FireBase"
Sent: Thursday, June 08, 2006 5:47 PM
Subject: Re: [firebase-br] OFF: Tempo de espera por resposta do servidor
aotentar conectar.
> Sugiro que vc trabalhe utilizando thread. Ela ficaria tentando conectar ao
> banco "em paralelo" com o restante da execução de sua aplicação. Se o
> servidor estar offline significa estar desligado, em vez de ficar tentando
> conectar ao banco vc poderia ficar tentando dar ping nele, que tem
resposta
> mais rápida. Resposta positiva, aí sim vc conecta ao banco. O outro lado é
> que sua aplicação ficaria gerando tráfego na rede, que ainda assim seria
> menor, mas este seria o preço a pagar.
>
> At,
> Pedro.
>
> Em 08/06/06, Gianclaudio Oliveira
> escreveu:
> >
> > Caros companheiros, estou tendo um probleminha meio off que talvez algum
> > de vocês possa me ajudar.
> > Utilizo o Delphi. Estou usando os componentes MDO (Mercury)
> > para acessar o Firebird. Acontece que, por necessidade do cliente, o
> > sistema tem que tentar fazer conexão com o servidor e, se não
conseguir, aí
> > ele conecta a um banco local.
> > Caso tenha começado trabalhando no banco local (Off-line), de tempos
> > em tempos ele deve tentar fazer a conexão com o servidor. Toda a
> > tentativa de conexão com o servidor acontece sem a interação do
usuário. Ou
> > seja, ele (o usuário) nem sabe se está trabalhando on-line ou off-line.
> > Isso é a necessidade do meu cliente.
> > Até aí tudo bem. O programa está pronto e funcionando corretamente.
> > O problema é que em toda a tentativa de conexão, se o servidor
> > não estiver disponível (por qualquer motivo que seja), o sistema fica
> > um tempão travado esperando a resposta do servidor, pra só depois dar
> > o erro de conexão. Dependendo do sistema operacional e das condições
> > da rede, esse tempo chega a 1:30min. Isso é uma eternidade nas mãos
> > dos usuários, que chegam a pensar que o sistema está lento ou travado.
> > Colocar algo na interface do sistema avisando sobre a tentativa
> > de conexão com o servidor não resolve, pois os usuários precisam
> > de agilidade no sistema.
> > Eu precisava diminuir o tempo de espera pela resposta do servidor.
> > De repente, algo que me dê a escolha do tempo. Provavelmente vou usar
> > um tempo bem curto como 1 segundo ou coisa do gênero.
> >
> > Desde já, obrigado pela ajuda.
> > Gianclaudio Oliveira
> >
> > __________________________________________________
> > Fale com seus amigos de graça com o novo Yahoo! Messenger
> > http://br.messenger.yahoo.com/
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para editar sua configuração na lista, use o endereço
> > http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
__________________________________________________
Fale com seus amigos de graça com o novo Yahoo! Messenger
http://br.messenger.yahoo.com/
Mais detalhes sobre a lista de discussão lista