Einzelnen Beitrag anzeigen

Centrii

Registriert seit: 18. Mai 2007
Ort: FDS
108 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Indy TCP-Server, unterbrochene Verbindung erkennen

  Alt 20. Mai 2008, 07:08
Moin

das dachte ich mir nämlich, jetzt hab ich nur das Problem das der TCPClient unter umständen nie sendet,
ich versorge mehrere Clients mit Daten, bekomme selber aber nichts. Sollte ich was bekommen, werte ich es im
OnExecute vom TCP-Server aus. Das funktioniert auch alles wunderbar. Nun erkenne ich es nicht wenn ein Client
nicht ordnungsgemäß beendet wird oder eine Netzwerkkabel ausgesteckt wird.
Mein Client bekommt es mit über ein KeepAlive.
Mit der Option "SIO_KEEPALIVE_VALS" in der System-Funktion "WSAIoctl" aus der "WS2_32.dll" kann diese Option aktiviert werden,
und gleichzeitig die Zeiten für den Timeout und den Interval festlegt werden. Dann werden vom TCP/IP-Stack automatisch "KeepAlive"-Pakete generiert,
wenn länger als die bei Timeout angegebene Zeit kein Datenaustausch stattfindet. Erfolgt auf diese "KeepAlive"-Pakete kein Acknowledge,
wird vom TCP/IP-Stack erkannt, daß die Verbindung unterbrochen ist. Das alles macht der TCP/IP-Stack alleine,
ohne das dafür etwas programmiert werden muß (außer dem Setzen der Option natürlich).
In meinem Client für den TCP-Server erkenne ich dadurch eine unterbrochene Verbindung nach spätestens einer Minute.
Nur leider schaff ich das nicht für den TCP-Server.
Sollte sich jemand damit auskennen, und mir ein paar Tipps geben, würde ich mich riesig freuen.

Gruß Ruben
Ruben
Theorie ist, wenn man alles weiss, aber nichts funktioniert. Praxis ist, wenn alles funktioniert und keiner weiss warum
  Mit Zitat antworten Zitat