![]() |
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. |
Re: TCP Client disconnect
Hat da keiner eine Idee wie ich das machen könnte?
Einfach mal ein wenig code oder so vielleicht kommt ja dann die zündende idee. Und ich bin ja glaube ich nicht der einzige der so ien Problem hat. |
Re: TCP Client disconnect
Zitat:
Delphi-Quellcode:
try
//datenabfrage except //abfangen der Exception (Exception kommt aber noch in Delphi wegen Debuggereinstellung) on e: Exception do begin Showmessage('Verbindung verloren!'); end; end; |
Re: TCP Client disconnect
Ok das hat inzwischen bei mir geklappt, leider nur kurze zeit.
Ich habe in delphi von debug auf release umgestellt und dann gings doch auf einmal nicht mehr. Was kann man denn da in den Release einstellungen genau einstellen, damit der fehler nicht kommt? Ich nutze Delphi 2009 |
Re: TCP Client disconnect
Zitat:
![]() Wenn du ein Readln hast das fehlschlägt (wie in deinem Beispiel), dann sollte eigentlich OnStatus aufgerufen werden. Da kannst du dann gut drauf reagieren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 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