Frage

Ich suche nach einer Funktion, die mir meine echte IP geben, nicht mein lokalen IP. die Funktion i zur Zeit hat, gibt die IP in Netzwerk- und Freigabecenter, das ist 192.168.2.100 Aber wenn ich gehe zu whatismyip, dann gibt es meine echte IP.

Wie kann ich dies mit VB.NET? Dank

War es hilfreich?

Lösung

Es gibt keinen Weg, dies nur mit VB.Net zu tun. Sie brauchen eine Website zu finden, die Sie (vielleicht eines Ihrer eigenen?) Wird zeigen, oder Sie müssen mit dem Router verbinden.

Wenn Sie eine Website haben, die laufen jede Art von Webseite-Anwendungen geeignet ist, können Sie eine Webseite erstellen, die einfach die Kunden gibt (wie im Computer auf die Seite Verbindungs) IP-Adresse.

Ich habe eine meiner eigenen:

http://etoys.netortech.com/devpages/ip.asp

Obwohl ich kann nicht garantieren, es wird immer da sein weshalb sollten Sie Ihre eigenen.

Von dort ist es eine einfache Sache, eine HttpWebRequest die zum Download Inhalt der Seite.

Andere Tipps

die Antworten zu kombinieren oben“ Erstellen Sie eine PHP-Datei und fügen Sie diese in ihm:

<?php
echo $_SERVER['REMOTE_ADDR'];
?>

als curip.php speichern und auf Ihren Server hochladen.

In Ihrem VB.net Projekt erstellen ein Modul. Deklarieren Sie den Einfuhren Abschnitt an der Spitze

Imports System.Net
Imports System.IO

Und erstellen Sie Ihre Funktion:

    Public Function GetIP() As String

    Dim uri_val As New Uri("http://yourdomain.com/curip.php")
    Dim request As HttpWebRequest = HttpWebRequest.Create(uri_val)

    request.Method = WebRequestMethods.Http.Get

    Dim response As HttpWebResponse = request.GetResponse()
    Dim reader As New StreamReader(response.GetResponseStream())
    Dim myIP As String = reader.ReadToEnd()

    response.Close()

    Return myIP
End Function

Jetzt überall in Ihrem Code können Sie den Befehl

Dim myIP = GetIP()

als den Wert von dort verwenden, wie Sie wollen.

Ich bin wahrscheinlich nur crotchety hier zu sein, aber ich kann nicht umhin zu denken, dass Ihre „echte“ IP-Adresse derjenige von ifconfig (ipconfig) auf dem lokalen Computer zurückgegeben wird. 192.168.2.100 in Ihrem Fall. Unabhängig von NAT-Übersetzung oder Tunneln geht zwischen Ihnen und dem Remote-Endpunkt sollte keine Rolle spielen, und wenn ja, gibt es eine gute Chance, Sie etwas zu tun, die Ihre Anwendung nur in der aktuellen Umgebung arbeiten machen könnten.

Ich mochte eine öffentlich zugängliche Website benutzen, die Adresse als Antwort Ihrer öffentlichen IP zurück.

Die wichtigsten Faktoren sind hier:

  1. Verfügbarkeit des Dienstes. Ihren eigenen Dienst ausgeführt werden garantiert die volle Kontrolle über das System und das Wissen, wenn es verfügbar ist, und wenn es nicht ist. Aber in einigen Fällen kann es einfach zu viel Arbeit für eine so einfache Aufgabe sein.
  2. Minimierung zusätzliche Unordnung in der Antwort enthalten. Es gibt viele Websites, so dass Sie Ihre öffentliche IP-Adresse zu bekommen, aber sie tun es oft, dass in Form einer HTML-Seite. das kleine Fragment der Seite Extrahieren der IP-Adresse enthält möglicherweise zusätzlichen Code benötigen.

Unter Berücksichtigung der Tatsache diese beiden Faktoren würde ich diese URL empfehlen: http://wtfismyip.com/text Es hat den Vorteil, Rückkehr nur die IP-Adresse in Textform. Es gibt auch Versionen für:

Wählen Sie das Format, das für Sie einfacher zu analysieren.

Sie brauchen nicht eine PHP-Datei zu verwenden, nur eine Website, die Ihre IP wie ip-adress.com zeigt und dann von dort die IP bekommen mit webrequest und dann mit GetBetween Funktion.

hat Spaß:)

Mit PHP kann es einfach getan werden:

Als "shaiss" den PHP-Code gemeinsam genutzt, ist dies der VB.net Code:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim myip As HttpWebRequest = HttpWebRequest.Create("http://YourHosting.com/curip.php")
        Dim grab As HttpWebResponse = myip.GetResponse()
        Dim stream As Stream = grab.GetResponseStream

        Dim SR As New StreamReader(stream)
        TextBox1.Text = SR.ReadToEnd()
    End Sub
End Class

Dies ist nur ein Beispiel mit:

1 - Form

1 - TextBox

1 - Taste (n)

Hope, das hilft!

hatte ich die gleiche Frage und suchte nur ein bisschen daran zu erinnern, dass ich dies mit WebBrowser tun können!

Private Sub getExtIP() Handles activeProjectsWB.DocumentCompleted
    If gotIP = False And populateProjectCollectionBLN = True Then
        If activeProjectsWB.ReadyState = WebBrowserReadyState.Interactive Or activeProjectsWB.ReadyState = WebBrowserReadyState.Complete Then
            Dim unformattedExtIP As String = activeProjectsWB.Document.GetElementsByTagName("title").Item(0).OuterHtml
            Dim onlyIPAddress As String = String.Empty
            For Each character In unformattedExtIP
                Dim result As Integer = 0
                If Not (Integer.TryParse(character, result) = 0) Or character = "." Then
                    onlyIPAddress = onlyIPAddress & character
                End If
            Next
            extIP = onlyIPAddress
            gotIP = True
        End If
    End If
End Sub

nur Dieses Unterprogramm ausgelöst wird, wenn Sie auf eine Webseite mit WebBrowser.Navigate() navigieren.

Die gotIP boolean existiert, weil ich ein anderes Unterprogramm haben, das auf jedem Dokument Abschluss aktiviert. Ich will nicht mehr als einmal ausgelöst werden. Wenn Sie mit WebBrowser nicht vertraut sind, überprüfen Sie die Web-Seite stellen Sie sicher, mit ReadyState genug geladen. Wenn Sie dies nicht tun, können Sie eine Ausnahme erhalten (weil Inhalt nicht geladen wird).

Sie können mit je nachdem, welche Seite Sie möchten. Diese Seite ist gut, weil es Ihre IP-Adresse in dem Titel steckt. Das ist gut, weil es geht um einen title-Tag sein. Für den Fall, können Sie diese Website nicht nutzen (oder eine, die einen einzigartigen Tag mit dem Inhalt in sich hat), verwenden Sie eine For Each Schleife.

                For Each instance As HtmlElement In activeProjectsWB.Document.GetElementsByTagName("InsertTagHere")
                    'do something to find the tag that contains your IP address
                Next
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top