[firebase-br] OFF: Tempo de espera por resposta do servidor aotentar conectar.
Daniel / Tecnobyte
temp em tecnobyte.com.br
Qui Jun 8 21:35:31 -03 2006
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" <news.pj em gmail.com>
To: "FireBase" <lista em firebase.com.br>
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 <gianclaudiooliveira em yahoo.com.br>
> 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
>
Mais detalhes sobre a lista de discussão lista