2010-04-20 5 views
6

Gibt es trotzdem mit Windows API, um festzustellen, ob eine Netzwerkverbindung eines Windows 7-Computers eine Internetverbindung oder eine LAN-Verbindung ohne Internetzugang ist? Windows 7 und Vista zeigen dies im Netzwerk-Icon an (nur lokal v. Lokal und Internet), gibt es diese Informationen ohnehin progammatisch?Erkennen von Internet V. LAN-Verbindung

Antwort

0

Nicht perfekt.

Sie konnten erkennen, wenn Sie auf einem LAN-Netz von der IP-Adresse sind (Ihre lokalen DHCP unter der Annahme eines der 192.168.xx.xx privaten Adressen ausgehändigt.)

Sie eine bekannte externe Seite ping könnte zu prüfen, ob Dieses LAN hat eine Internetverbindung.

+0

Nur weil der Computer eine private hat Die IP-Adresse (die auch 10.x.x.x und 172.16-31.x.x enthält) bedeutet nicht, dass sie nicht mit dem Internet verbunden ist. Wie jeder, der auf diese Seite hinter einem Heim-Router, der NAT durchführt, zugreift, kann bestätigen! –

+0

Es war nicht klar, was das OP forderte, dh. direkte Internetverbindung vs NAT –

1

Pinging 4.2.2.2 ist eine gängige Methode, um zu ermitteln, ob eine Internetverbindung vorhanden ist.

Die Geschichte hinter dieser lies here.

+0

Interessant. Was ist vnsc-bak.sys.gtei.de? – sbi

+2

Obwohl jetzt 8.8.8.8 ist wahrscheinlich besser (siehe die Macht von Google) –

+0

@Martin: Ja, obwohl 4.2.2.2 ist jetzt Muskelspeicher für mich. Ich weiß nicht, ob ich es ertragen kann, 8.8.8.8 und seinen unbequemen Winkel zwischen Zeige- und Mittelfinger zu lernen. –

0

Windows 7 führt DNS-Abfrage für dns.msftncsi.com 5 Sekunden nach Verbindungsaufbau durch. Sehen Sie keinen Grund, dies zu tun, außer die Internetverbindung zu überprüfen.

0

Die Windows-API-Code-Pack wird dies für Sie tun http://archive.msdn.microsoft.com/WindowsAPICodePack

seine NetworkListManager Klasse hat eine IsConnected Eigenschaft, dass, wenn Sie Verbindung haben

LAN zeigt

und ein IsConnectedToInternet Eigenschaft, dass, wenn Sie

gibt Internetverbindung

Das Paket-Download enthält eine Netzwerk-Demo-Anwendung, die das zeigt

+0

Die Frage ist mit C++ markiert, was nativen Code bedeutet. Das Code Pack (welches ich liebe und teilweise dafür verantwortlich bin) ist ein gemanagter Code, zB C# –

Verwandte Themen