Externe IP auslesen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Externe IP auslesen

    hi,

    ich möchte gern die öffentliche IP adresse auslesen. habe schon einiges probiert aber nichts hat wrklich funktioniert.aus einem älteren Projekt von mir wo ich bereits die öffentliche ip auslesen kann(funktioniert einwandfrei). wollte ich das ganz nun auf mein derzeitiges Projekt übertragen. nur leider funktioniert das ganze in VS 2017 nicht mehr. unter vS 2012 funktioniert alles super.

    ich habe eine klasse mit dem namen (EXT_IP) erstellt den code hatte ich kopiert und in meinem jetzigen Projekt die klasse erstellt und alles eingfügt. aber es funktioniert nicht.

    hier die klasse EXT_IP:

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class EXT_IP
    3. ''' <summary>
    4. ''' Die Sericeadresse, von der die IP abgefragt wird.
    5. ''' </summary>
    6. Public Property ServiceAddress As Uri = New Uri("http://checkip.dyndns.com/")
    7. Private WithEvents _wClient As WebClient
    8. ''' <summary>
    9. ''' Wird ausgelöst, wenn die Abfrage der IP erfolgreich war.
    10. ''' </summary>
    11. Public Event IPUpdateCompleted As EventHandler(Of IPAddress)
    12. ''' <summary>
    13. ''' Wird ausgelöst, wenn bei der Abfrage der IP ein Fehler auftritt.
    14. ''' </summary>
    15. Public Event IPUpdateError As EventHandler
    16. ''' <summary>
    17. ''' Erzeugt eine neue Instanz der Klasse PublicIP
    18. ''' </summary>
    19. Public Sub New()
    20. _wClient = New WebClient()
    21. _wClient.Proxy = Nothing
    22. End Sub
    23. ''' <summary>
    24. ''' Startet die Abfrage der öffentlichen IP.
    25. ''' </summary>
    26. Public Sub GetIP()
    27. _wClient.DownloadStringAsync(ServiceAddress)
    28. End Sub
    29. Private Sub _wClient_DownloadStringCompleted(sender As Object, e As DownloadStringCompletedEventArgs) Handles _wClient.DownloadStringCompleted
    30. If e.Error Is Nothing Then
    31. Dim ip As IPAddress = Nothing
    32. Dim ipString As String = e.Result.Split(New String() {": ", "</"}, StringSplitOptions.RemoveEmptyEntries)(3)
    33. If IPAddress.TryParse(ipString, ip) Then
    34. OnIPUpdateComplete(ip)
    35. Else
    36. OnIPUpdateError()
    37. End If
    38. Else
    39. OnIPUpdateError()
    40. End If
    41. End Sub
    42. Private Sub OnIPUpdateComplete(ByVal ip As IPAddress)
    43. RaiseEvent IPUpdateCompleted(Me, ip)
    44. End Sub
    45. Private Sub OnIPUpdateError()
    46. RaiseEvent IPUpdateError(Me, EventArgs.Empty)
    47. End Sub
    48. End Class


    hier der restliche code dazu:

    VB.NET-Quellcode

    1. Private WithEvents _ip As New EXT_IP()
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    3. _ip.GetIP()
    4. lblintern.Text = ComputerInfo.Info.Network.get_LocalIP
    5. lblextern.Text = ComputerInfo.Info.Network.get_AdapterServiceName
    6. End Sub
    7. Private Sub _ip_IPUpdateCompleted(sender As Object, e As Net.IPAddress) Handles _ip.IPUpdateCompleted
    8. Me.lblextern.Text = e.ToString()
    9. End Sub
    10. Private Sub _ip_IPUpdateError(sender As Object, e As EventArgs) Handles _ip.IPUpdateError
    11. Me.lblextern.Text = "Bei der Abfrage der öffentlichen IP trat ein Fehler auf."
    12. End Sub


    wie gesagt in VS2012 funktioniert alles einwandfrei aber in VS 2017 funktioniert das ganze nicht mehr.

    hier die labels mit den ip adressen.


    es scheitert an der klasse (ComputerInfo) in vs2017 ist diese klasse anders als bei vs 2012

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „user2100“ ()

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!