Wie sollte ich in dieser Situation wiederherstellen?Wiederherstellung von "Verbindung durch Peer zurückgesetzt" Indy TCP Client
Der Server stürzt ab, daher wurde die Verbindung abnormal geschlossen. Aufrufe an fast alles führen zu "Connection Reset by Peer" Ausnahmen. Ich habe es anscheinend durch das Aufrufen von Disconnect für das TIdTCPClient-Objekt innerhalb des except-Blocks behoben, aber es führt zu einer letzten Ausnahme mit derselben Nachricht (die ich im zweiten try-except-Block abgefangen habe).
Dies ist mit Indy10 und 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;
Haben Sie versucht, in TIdTCPConnection.Disconnect in IdTCPConnection.pas zu debuggen? Möglicherweise wird ein OnDisconnect-Handler ausgeführt und verwendet die Verbindung. Oder die NotifyPeer spielt eine Rolle, siehe auch die Kommentare in der Quelle über verschiedene Szenarien – mjn
Freigeben des Objekts und Erstellen eines neuen neuen wird helfen (aber nicht helfen, den Grund für die Ausnahme zu finden) – mjn
Ich bin nicht so sehr mit warum beschäftigt Ich erhalte eine Ausnahme, wenn ich die Verbindung abbringe. Ich möchte nur wissen, wie ich mich von einer solchen Situation erholen kann. –