[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