AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TCP Client disconnect
Thema durchsuchen
Ansicht
Themen-Optionen

TCP Client disconnect

Ein Thema von XXcD · begonnen am 3. Aug 2009 · letzter Beitrag vom 27. Jan 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#1

TCP Client disconnect

  Alt 3. Aug 2009, 14:07
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:
try
read:=IdTCPClient2.IOHandler.ReadLn('', 50);
except
if OnChannel=true then
begin
IdTCPClient2.Disconnect;
Timer1.Enabled:=false;
Showmessage('Verbindung getrennt!');
Form8.Close;
end;
end;

...
Aber immer wenn die verbindung sich trennt kommt es vor, dass noch einmal die Nachricht erscheint "Connection reset by peer".
Ich dachte wenn ich try und except nutze kommt das nicht, aber das bringt leider nichts.
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#2

Re: TCP Client disconnect

  Alt 3. Aug 2009, 15:22
Gerade habe ich rausgefunden, dass es mit
on E:EIdSocketError do gehen müsste.

Leider funktioniert das nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: TCP Client disconnect

  Alt 3. Aug 2009, 15:24
Welche Indy-Version verwendest Du?
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TCP Client disconnect

  Alt 3. Aug 2009, 15:26
Indy 10
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: TCP Client disconnect

  Alt 3. Aug 2009, 15:28
Der TCP Client bietet ein Event namens "OnDisconnected". Das dürfte es doch sein oder nicht?
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#6

Re: TCP Client disconnect

  Alt 3. Aug 2009, 15:29
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.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#7

Re: TCP Client disconnect

  Alt 3. Aug 2009, 17:10
Zitat von XXcD:
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.
Erst wenn versucht wird, Daten über den Socket zu empfangen (oder zu senden), kann das Ausfallen der Gegenseite erkannt werden. Das ist eine Eigenschaft des TCP/IP Protokolls, nicht der Indy Komponenten, und läßt sich nur auf einer höheren Schicht zum Beispiel durch regelmäßige Nachrichten ('Hallo, ich bin noch da!') lösen.

Cheers,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#8

Re: TCP Client disconnect

  Alt 3. Aug 2009, 17:13
Ja ich habe doch einen Timer mit Readln und das ganze in einem try except block.
Dieser wird aber nicht richtig ausgeführt.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#9

Re: TCP Client disconnect

  Alt 3. Aug 2009, 17:27
Zitat von XXcD:
Ja ich habe doch einen Timer mit Readln und das ganze in einem try except block.
Dieser wird aber nicht richtig ausgeführt.
Erscheint die "Connection reset by peer" Nachricht auch wenn das Programm ausserhalb der IDE läuft?

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)
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von XXcD
XXcD

Registriert seit: 19. Sep 2006
581 Beiträge
 
Delphi 2007 Professional
 
#10

Re: TCP Client disconnect

  Alt 3. Aug 2009, 17:55
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz