In che modo dovrei essere ripristinato in questa situazione?ripristino da "Connessione ripristinata per peer" Client Indy TCP
I crash del server, quindi la connessione è stata chiusa in modo anomalo. Le chiamate a quasi tutto comportano eccezioni di "Connessione ripristinata per peer". Mi sembra di averlo risolto chiamando Disconnect sull'oggetto TIdTCPClient all'interno del blocco except, ma si traduce in un'eccezione finale con lo stesso messaggio (che ho rilevato nel secondo try-except block).
Questo è con Indy10 e 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;
Hai provato a eseguire il debug in TIdTCPConnection.Disconnect in IdTCPConnection.pas? Forse un gestore OnDisconnect viene eseguito e utilizza la connessione. O il NotifyPeer gioca un ruolo, puoi anche consultare i commenti nel codice sui diversi scenari – mjn
Liberare l'oggetto e la creazione di una nuova fresca vi aiuterà (ma non aiutano a trovare la ragione per l'eccezione) – mjn
Io non sono tanto preoccupato per questo Ricevo un'eccezione quando si chiama disconnect. Voglio solo sapere come recuperare correttamente da una situazione come questa. –