Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#8

Re: Feststellen, dass das LAN-Kabel gezogen wurde

  Alt 29. Apr 2009, 13:25
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat