| 

.NET C# Java Javascript Exception

6
Wie kann ich prüfen, ob der Rechner, auf dem meine Software läuft, gerade über eine Internetverbindung verfügt? Klar, ich kann irgendwie einen Ping auf einen Server loslassen und schauen, was zurückkommt. Aber da muss es doch eine professionellere Lösung geben, oder?
News:
07.03.2011
Mojito 61 3
4 Antworten
10
Kurz und knapp: gar nicht. Es ist unmöglich diese Frage immer korrekt zu beantworten. Siehe dazu auch die immer wieder passende Geschichte von Marian Aldenhövel.

ABER: In den meisten Fällen möchte man etwas ganz anderes erreichen. Was ist denn der Zweck dieser Prüfung?
07.03.2011
m.fuchs 1,8k 2 8
1
Die Erklärung in der Geschichte finde ich echt gut.
nabuchodonossor 07.03.2011
1
Nette Geschichte, kannte ich nicht, obwohl es älter zu sein scheint!
Achso 23.05.2011
2
Meine Empfehlung:

Gehe einfach davon aus, dass eine Internetverbindung besteht und nutze sie wofür auch immer du sie brauchst. Wenn der entsprechende Vorgang fehlschlägt, zeigst du eine Fehlermeldung an oder behandelst den Fall entsprechend geeignet anders. Da kommst du eh nicht drumherum, selbst wenn du vorher wüsstest, ob eine Internetverbindung besteht oder nicht.

Und wenn dein Programm aus welchen Gründen auch immer einen speziellen "Offline"-Modus braucht, in dem eben gerade nicht versucht werden soll, eine Internetverbindung zu nutzen, dann baue diesen Modus explizit ein und lass den Benutzer ihn aktivieren und deaktivieren, weil er es halt am besten weiß.

Diese Grundidee kann man dann je nach Anwendungsfall unterschiedlich komfortabel ausgestalten. (Beispiel 1: "Der Vorgang 'ABC' schlug fehl. Möchten Sie offline arbeiten?" / Beispiel 2: "Sie haben das Programm beim letzten mal im Offline-Modus verlassen, möchten Sie jetzt online arbeiten?")

Machen etliche andere Programme auch so, die es sicher anders machen würden, wenn es gehen würde. (Prominente Beispiele: MS Outlook, Mozilla Firefox und viele andere mehr!)

Fazit: Internetverbindung vorhanden? Juckt dich nicht (wirklich)!
23.05.2011
Achso 340 1 6
Achso 340 1 6
1
Möglicherweise hilft Dir die Klasse NetworkChange weiter. Aber 100% Zuverlässigkeit solltest Du nicht erwarten und die Aussagekraft der beiden Events, die darin bereitgestellt werden, nicht überbewerten - siehe die von m.fuchs verlinkte Geschichte.
07.03.2011
Matthias Hlawatsch 13,2k 4 9
1
Ich machs mit VB .NET wie folgt:
Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef dwFlags As Integer, ByVal dwReserved As Integer) As Integer

Public Function InternetConnection() As Boolean

Dim flags As Integer = 0
Dim inet As Integer = InternetGetConnectedState(flags, 0)
If inet = 1 Then
Return True
ElseIf inet = 0 Then
Return False
End If

End Function
30.07.2012
spicejam 853 2 6
Wir nutzen diese Methode (allerdings in C#), ist sehr zuverlässig!

Einziges Problem, dass wir bisher hatten: Beim UMTS-Sticks, die im Netz sind, aber kein Kontingent mehr haben. Gibt es ein "True", obwohl keine Verbindung besteht.
schokostecker 16.11.2012

Stelle deine Server-Frage jetzt!