Feedback

VB - Eigene IP - die 2.te - mit Reg.-Expressions

Veröffentlicht von am 11/2/2007
(2 Bewertungen)
Dies ist ebenfalls ein Code der die eigene - die öffentliche - IP-Adresse ermittelt und prüft, ob sie mit der IP des Rechners übereinstimmt. So wird ermittelt, ob man direkt mit dem WWW oder hinter einem Router, Proxy, etc. steht.

ich habe ebenfalls als Provider "http://myip.bdsw.de" verwandt.
'Der Übersicht halber habe ich eine Klasse clsSVSS erstellt. Diese nimmt die Grundfunktionlität auf.
 
Imports System.IO
Imports System.Text
Imports System.Net


Public Class clsSVSS  

    Private Const svssIPCall As String = "http://myip.bdsw.de"

    Public Shared Function GetRouterIpAddress() As Net.IPAddress

        Try
            Dim wb As New Net.WebClient
            Dim b() As Byte = wb.DownloadData(svssIPCall)
            Dim line As String = System.Text.Encoding.Default.GetString(b)
            Dim pattern As String = "\b(?:\d{1,3}\.){3}\d{1,3}\b"
            Dim regEx As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(pattern)
            If regEx.Matches(line).Count < 1 Then Return Net.IPAddress.None
            Return Net.IPAddress.Parse(regEx.Matches(line).Item(0).Value)
        Catch ex As Exception
            Return Nothing
        End Try

    End Function

end class



'In der Hauptanwendung gibt es ein Listviewsteuerelement (zur besseren Darstellung) und die folgende Function
im load Ereignis


Function GetPublicIP()


   Me.Listview7.clear
   Me.ListView7.Columns.Add("Public IP-Address", 236, HorizontalAlignment.Left)
   Me.ListView7.Columns.Add("Status", 237, HorizontalAlignment.Left)

   Dim strHostName As String = System.Net.Dns.GetHostName.ToString
    Dim routerIp As Net.IPAddress = clsSVSS.GetRouterIpAddress()
    Dim staticIp As Net.IPAddress = Net.Dns.GetHostEntry(Environment.MachineName).AddressList(0)
    Dim lvi As New ListViewItem

       Me.Refresh()
       Thread.Sleep(100)

      If routerIp.Equals(staticIp) Then
        lvi.Text = staticIp.ToString()
        lvi.SubItems.Add(Trim("Machine is directly connected to the internet."))
        Me.ListView7.Items.Add(lvi)

        Else
          lvi.Text = routerIp.ToString()
          lvi.SubItems.Add(Trim("Your machine is configured behind a router."))
              Me.ListView7.Items.Add(lvi)
                    End If

                    For Each locColumn As ColumnHeader In Me.ListView7.Columns
                        If Not locColumn.Index = 0 Then
                            locColumn.Width = -2
                        End If
                    Next

End Function
Abgelegt unter IP, Public IP.

1 Kommentare zum Snippet

Justus schrieb am 7/14/2009:
Hmm, es gibt da eine eigene Methode um IP-Adressen vom lokalen Rechner rauszubekommem. .Net stellt dazu die Funktion NetworkInterface.GetAllNetworkInterfaces() zur Verfügung. Ich hab das auf http://halloserv.de/blog/index.php?/archives/80-Lokale-IPs-rausfinden.html genauer beschrieben.
 

Logge dich ein, um hier zu kommentieren!