Zitat von
Rainer78:
Ich programmiere direkt über Sockets etc. jedoch erhalte ich da erst nach einem Timeout, dass die Verbindung abgebrochen ist.
Windows stellt jedoch direkt fest, wenn die Verbindung nicht mehr besteht (wird ja unten rechts in der
TNA angezeigt). Wie kann ich dieses Ereignis abfangen, so dass ich auch so schnell als Möglich auf den Verbindungs-Abbruch reagieren kann ?
Das kann nur in Sonderfällen funktionieren. Nimm mal an, Du hast folgende Netzwerk-Struktur:
PC2 <-1-> Switch1 <-2-> Router <-3-> Switch2 <-4-> Hub <-5-> PC2
Mit diesem Event bekommst Du lediglich mit, wenn Kabel 1 (nur an PC1) oder Kabel 5 (nur an PC2) gezogen wird.
Wird Kabel 2, 3 oder 4 gezogen, oder fällt der Router bzw. Switch 2 aus, so bekommst Du den Verbindungsabbruch wieder nur mit einem Timeout mit (wenn überhaupt).
Das bedeutet also, diese Lösung deckt genau einen Sonderfall ab: Die Verbindung zwischen dem PC auf dem diese Software läuft und dem unmittelbar nächsten Netzwerkgerät wird physikalisch getrennt. Alle anderen möglichen Fehlersituationen im Netzwerk (die um längen häufiger und wohl auch wahrscheinlicher sind), fängst Du nicht ab. Lohnt es sich den Aufwand für diesen einen Sonderfall zu treiben?
Ich würde empfehlen, eine logische Quittierung aller übertragenen Daten mit einem eigenen Timeout zu implementieren. Bleibt die Quittung im Zeitraum X aus, ist die Verbindung weg.