![]() |
TCP Client disconnect
Hallo,
ich verwende den Indy TCP Client und möchte dort ein OnDisconnect Ereignis einbauen. Dieser Disconnect kommt vom Server aus und der Client soll darauf reagieren. Theoretisch könnte ich ja den Server noch etwas senden lassen, dass das Disconnect ausgelöst wird, aber es kann ja auch vor kommen, dass plötzlich die Internetverbindung getrennt wird und dann kommt das nicht an. Bis jetzt hab ich das so:
Delphi-Quellcode:
Aber immer wenn die verbindung sich trennt kommt es vor, dass noch einmal die Nachricht erscheint "Connection reset by peer".
try
read:=IdTCPClient2.IOHandler.ReadLn('', 50); except if OnChannel=true then begin IdTCPClient2.Disconnect; Timer1.Enabled:=false; Showmessage('Verbindung getrennt!'); Form8.Close; end; end; ... Ich dachte wenn ich try und except nutze kommt das nicht, aber das bringt leider nichts. |
Re: TCP Client disconnect
Gerade habe ich rausgefunden, dass es mit
Delphi-Quellcode:
gehen müsste.
on E:EIdSocketError do
Leider funktioniert das nicht. |
Re: TCP Client disconnect
Welche Indy-Version verwendest Du?
|
Re: TCP Client disconnect
Indy 10
|
Re: TCP Client disconnect
Der TCP Client bietet ein Event namens "OnDisconnected". Das dürfte es doch sein oder nicht? :gruebel:
|
Re: TCP Client disconnect
Aber wenn beispielsweise der Server abstürtzt dann wird das Ereignis einfach nicht ausgeführt.
Das wird irgendwie nur ausgeführt wenn ich im Client "Client.Disconnect" ausführe. |
Re: TCP Client disconnect
Zitat:
Cheers, |
Re: TCP Client disconnect
Ja ich habe doch einen Timer mit Readln und das ganze in einem try except block.
Dieser wird aber nicht richtig ausgeführt. |
Re: TCP Client disconnect
Zitat:
Nein -> dann liegt es an den Exception-Einstellungen für den Debugger, hier kann man dann die Indy-Exception in die Liste der zu ignorierenden Exceptions aufnehmen Ja -> dann wird wohl ausserhalb des try .. except irgendwo noch auf die Verbindung zugegriffen (lesend oder schreibend) |
Re: TCP Client disconnect
Ich kann es beides ausschliessen.
Die Nachricht erscheint immer und der Fehler wird eindeutig in dem Timer ausgelöst, weil wenn ich den deaktivere passiert garnichts. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz