delphi tcp indy

delphi - recuperándose del cliente Indy TCP "Restablecimiento de conexión"



(1)

¿Cómo debería estar recuperándome en esta situación?

El servidor falla, por lo tanto, la conexión ha sido anormalmente cerrada. Las llamadas a casi todo resultan en excepciones de "Restablecimiento de conexión por pares". Parece que lo solucioné llamando a Desconectar en el objeto TIdTCPClient dentro del bloque except, pero da como resultado una excepción final con el mismo mensaje (que he capturado en el segundo bloque try-except).

Esto es con Indy10 y Delphi XE2.

try if not EcomSocket.Connected then EcomSocket.Connect(); except on e: Exception do begin try EcomSocket.Disconnect(); except MessageDlg(''Connectivity to the server has been lost.'', mtError, [mbOK], 0); end; end; end;


Prueba esto:

try if not EcomSocket.Connected then EcomSocket.Connect(); except try EcomSocket.Disconnect(False); except end; if EcomSocket.IOHandler <> nil then EcomSocket.IOHandler.InputBuffer.Clear; MessageDlg(''Connectivity to the server has been lost.'', mtError, [mbOK], 0); end;