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
1 Kommentare zum Snippet