PDA

Ver la Versión Completa : Sin conección a BD


mjjj
13-07-2010, 01:05:59
Hola, utilizo Delphi 2006, Firebird 2.5 y componentes FIBPlus.

Una aplicación cliente-servidor, el cliente se conecta de forma remota, es decir utilizando internet para acceder a la BD.

El codigo que utilizo es asi.


try
connect.DataModule1.db1.Open;

if connect.DataModule1.db1.Connected then
begin
Form := Ts.Create(self);
form7.hide;
form.Showmodal;
end;
except
showmessage('No se pudo conectar al servidor.);
end;


Puede ocurrir que el cliente en ese momento no tenga conección a internet.

El problema es que se queda demasiado tiempo pegado en el TRY, hasta que finalmente me arroja el mensaje de problema.

El componente tiene una propiedad timeout, la modifico, pero sigue sin dar una rapida respuesta.

Como puedo mejorar esto?

Casimiro Notevi
13-07-2010, 01:08:58
Básicamente no es lo más idóneo una conexión de ese tipo por internet.
Cuando internet sea como mínimo de 100 Mb, tal y como es una red local normal, entonces sí será posible.

Rockin
13-07-2010, 10:34:02
Deberias plantearte usar un servidor da capa intermedia, así no será un problema la conexión.

Saludos.

Neftali [Germán.Estévez]
13-07-2010, 11:29:22
Tal vez prodrías programar un hilo aparte (Thread) que te comprobara periódicamente la conexión, para no dejar "enganchado" el hilo principal. El hilo principal, lo que haría cuando la haga falta es consultar el resultado del hilo secundario.

mjjj
13-07-2010, 19:31:13
Neftali, he trato de hacer con un hilo secundario que revise mi conección, esto simplemente dentro de un try la sentencia de conección a la BD.

Podría chequear de forma mas eficiente si el servidor o la conección está OK para conectarme?

Podría ser algo asi con un ping alguna IP.

No se como hacer esto, lo del ping eso solo una idea.. como lo harian ustedes??

Saludos

Neftali [Germán.Estévez]
13-07-2010, 23:21:27
Puedes hacer un Ping, eso te da información del Servidor, pero no del SGBD (aunque posíblemente cuando pierdas conexión con uno lo harás con el otro también).
Puedes empezar con un PING a ver si te da buen resultado y si ves que no, pasas a comprobar la conexión.
En mi página puedes encontrar un artículo titulado "Ping threaded utilizando ICMP.DLL (http://neftali.clubdelphi.com/?p=562)" que tal vez te sirva. Puedes revisar el código y adaptarlo a tus necesidades.