none
Auf Internetverbindung prüfen RRS feed

  • Frage

  • Hi zusammen, ich prüfe mit folgender Funktion ob es eine funktionierende Internetverbindung gibt.
    Ist die Funktion okay, oder könnt ihr noch was anderes (evtl. funktional besseres) empfehlen?
    Gruss
        Public Function TestInternet() As Boolean
    
            Dim req As System.Net.HttpWebRequest
            Dim res As System.Net.HttpWebResponse
    
            TestInternet = False
    
            Try
                req = CType(System.Net.HttpWebRequest.Create("http://www.google.com"), System.Net.HttpWebRequest)
                res = CType(req.GetResponse(), System.Net.HttpWebResponse)
                req.Abort()
    
                If res.StatusCode = System.Net.HttpStatusCode.OK Then
                    TestInternet = True
                End If
    
            Catch weberrt As System.Net.WebException
                TestInternet = False
    
            Catch except As Exception
                TestInternet = False
    
            End Try
    
        End Function
    Dienstag, 14. Mai 2013 18:09

Antworten

  • Hallo Peter,

    dein Vorschlag sagt nichts darüber aus, ob eine Verbindung ins Internet möglich ist, sondern nur ob eine Netzwerkverbindung verfügbar ist. Die vorhandene Netzwerkverbindung könnte dabei in einem lokalem Netz liegen.

    Bei der Prüfung auf eine Internetverbindung muss gegebenenfalls auch auf die Verwendung eines Proxies geprüft werden und dieser dann für die Verbindung berücksichtigt werden. Die WebException enthält dazu Informationen.

    Gruß



    - Florian

    Mittwoch, 15. Mai 2013 09:37

Alle Antworten

  • Hallo,

    grundsätzlich gibt es viele Möglichkeiten das Internet zu prüfen. In deinem Code könntest du dir die Variable TestInternet sparen und statt der Zuweisung sofort einen Wert zurück geben. Außerdem solltest du das HttpWebResponse entweder in einem Using-Block erstellen oder am Ende Close() aufrufen.

    Ich persönlich würde es über einen einfachen Ping machen.

        Public Function TestInternet() As Boolean
            Return New Ping().Send("www.google.com").Status = IPStatus.Success
        End Function

    Welcher Code nun besser ist ist sicherlich ansichtssache. Meiner ist nur Kürzer.

    Weitere Möglichkeiten findest du nachfolgend:
    http://stackoverflow.com/questions/2031824/what-is-the-best-way-to-check-for-internet-connectivity-using-net


    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    Dienstag, 14. Mai 2013 18:22
    Moderator
  • Hi Thomas,
    am besten finde ich:

    Imports System.Net.NetworkInformation
    
    Module Module1
    
      Sub Main()
        If NetworkInterface.GetIsNetworkAvailable Then
          Console.WriteLine("Internet verfügbar")
        Else
          Console.WriteLine("Internet nicht verfügbar")
        End If
        Console.ReadKey()
      End Sub
    
    End Module
    

    --
    Viele Gruesse
    Peter

    • Als Antwort vorgeschlagen Dennis Becker Mittwoch, 15. Mai 2013 09:10
    Dienstag, 14. Mai 2013 20:02
  • Hi.

    Ich finde Peters Lösung cool (und kurz genug, wenn man den Console-Kram weglässt), weil sie tatsächlich lokal prüft, ob eine Verbindung möglich ist, und nicht auf die eine oder andere Weise, ob der Google-Server reagiert. Der kann schließlich auch mal down sein. Wenn auch selten ...

    LG, Dennis.

    Mittwoch, 15. Mai 2013 09:13
  • Hallo Peter,

    dein Vorschlag sagt nichts darüber aus, ob eine Verbindung ins Internet möglich ist, sondern nur ob eine Netzwerkverbindung verfügbar ist. Die vorhandene Netzwerkverbindung könnte dabei in einem lokalem Netz liegen.

    Bei der Prüfung auf eine Internetverbindung muss gegebenenfalls auch auf die Verwendung eines Proxies geprüft werden und dieser dann für die Verbindung berücksichtigt werden. Die WebException enthält dazu Informationen.

    Gruß



    - Florian

    Mittwoch, 15. Mai 2013 09:37