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