Ver la Versión Completa : Indy 10, propiedad connected
Punzo
07-09-2020, 16:13:17
Buen día a todos, alguien me podría guiar acerca de como manejar una desconexión con componentes Indy, ya que al desconectar a propósito el equipo donde está corriendo mi aplicación, y preguntar si está conectado el cliente me devuelve un error, esto lo hago con un TIdTCPClient.
var
IdTCPClient1: TIdTCPClient;
procedure validacion;
begin
if Not(IdTCPClient1.Connected) then //al llegar aquí me manda el error 'Socket Error # 10054
//Connection reset by peer.'
..
end;
Muchas de antemano por su ayuda
ElKurgan
09-09-2020, 09:56:31
Hombre, parece claro que al estar desconectado el otro par, se produzca una excepción.
Lo más sencillo para seguir usando ese código sería hacer lo siguiente:
var
IdTCPClient1: TIdTCPClient;
procedure validacion;
begin
try
if IdTCPClient1.Connected then
begin
// lo que sea
end;
except
ShowMessage('No conectado');
// y lo que sea...
end;
end;
Un saludo
Punzo
10-09-2020, 17:37:38
Muchas gracias por la ayuda, lo solucione de la siguiente forma, para que no me eleve una excepción, utilice una clase interpuesta con la finalidad de redefinir el método Connected, y que este me regresara True o False, dependiendo, está solución la encontré gracias a la asesoría de Al González.
unit UGeneral;
interface
uses
IdTCPClient, IdStack;
type
TIdTCPClient = Class (IdTCPClient.TIdTCPClient)
function Connected :Boolean; Override;
end;
implementation
{ TIdTCPClient }
function TIdTCPClient.Connected :Boolean;
begin
try
Result := Inherited Connected;
except
on EIdSocketError do
Result := False;
end;
end;
end.
Espero que a alguién más le sirva, saludos.
ElKurgan
11-09-2020, 11:01:41
OK, gracias por compartir
Saludos
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.