internetverbinding

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Code:
Private Function IsConnectieBeschikbaar() As Boolean

Dim URL As New System.Uri("http://www.google.nl/")
Dim WebAanvraag As System.Net.WebRequest = System.Net.WebRequest.Create(URL)

Dim WebReactie As System.Net.WebResponse

Try
WebReactie = WebAanvraag.GetResponse()
WebReactie.Close()
WebAanvraag = Nothing
Return True
Catch ex As Exception
WebAanvraag = Nothing
Return False
End Try

End Function

Ik maak al lange tijd gebruik van de bovenstaande code om internetverbinding te controleren. Nu merkte ik dat deze code het programma behoorlijk vertraagd. (ik had in een button.click gezet "If isconnectiebeschikbaar() then form1.wasverbinding = true". Het duurt bijna 2 seconden voordat het form sluit. Er wordt geen andere code uitgevoerd, dus het moet in de 'isconnectiebeschikbaar()' zitten.

Is er misschien een snellere methode om INTERNETverbinding te controleren?

(dus my.computer.network.isavaible werkt niet, want die geeft ook al 'true' bij een LAN netwerkverbinding...)
 
Is er misschien een snellere methode om INTERNETverbinding te controleren?
Ik vond op het internet deze methode:
Code:
Public Function netwerk1()
        If (My.Computer.Network.IsAvailable And My.Computer.Network.Ping("google.nl")) Then Return True Else Return False
    End Function
Is deze betrouwbaar? (d.w.z. geeft deze geen 'true' als alleen een LAN beschikbaar is? Ik kan het niet zelf testen op dit moment)

Door te testen met onderstaande code kwam ik er wel achter dat deze veel sneller is... de 'nieuwe' code geeft tussen de 141 en de 89 milliseconden vertraging (bijna niet te merken), de andere tussen de 3000 en de 20 ms vertraging (Die hoge waarden alleen op het moment dat het programma start OF als ik mijn netwerkkabel erin/eruit heb gehaald, zodat de waarde veranderd). (Zie verbinding.png)
Code:
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Static Start1 As DateTime
        Static [Stop1] As DateTime
        Static Start2 As DateTime
        Static [Stop2] As DateTime

        Start2 = Now()
        Label2.Text = netwerk2.ToString
        [Stop2] = Now()
        Label4.Text = Math.Round([Stop2].Subtract(Start2).TotalMilliseconds) 'Math.Round(totaal2 / teller)
        ListBox2.Items.Add(Label4.Text)

        Start1 = Now()
        Label1.Text = netwerk1.ToString
        [Stop1] = Now()
        Label3.Text = Math.Round([Stop1].Subtract(Start1).TotalMilliseconds) 'Math.Round(totaal1 / teller)
        ListBox1.Items.Add(Label3.Text)

    End Sub

    Public Function netwerk1()
        If (My.Computer.Network.IsAvailable And My.Computer.Network.Ping("google.nl")) Then Return True Else Return False
    End Function

    Public Function netwerk2() As Boolean
        Dim URL As New System.Uri("http://www.google.nl/")
        Dim WebAanvraag As System.Net.WebRequest = System.Net.WebRequest.Create(URL)
        Dim WebReactie As System.Net.WebResponse
        Try
            WebReactie = WebAanvraag.GetResponse()
            WebReactie.Close()
            WebAanvraag = Nothing
            Return True
        Catch ex As Exception
            WebAanvraag = Nothing
            Return False
        End Try
    End Function
End Class
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan