Question

Je suis à la recherche d'une fonction qui va me donner mon adresse IP réelle, pas mon IP locale. la fonction i ai actuellement, retourne l'adresse IP dans le réseau et le centre de partage qui est 192.168.2.100 Mais si je vais à WhatIsMyIp, il donne mon adresse IP réelle.

Comment pourrais-je obtenir cela en utilisant VB.NET? merci

Était-ce utile?

La solution

Il n'y a aucun moyen de le faire juste avec VB.Net. Vous devez trouver un site qui vous dira (peut-être un de vos propres?) Ou vous avez besoin d'interface avec votre routeur.

Si vous avez un site Web qui est capable d'exécuter toutes sortes d'applications page Web, vous pouvez créer une page web qui affiche simplement du client (comme dans l'ordinateur qui se connecte à la page) adresse IP.

J'ai un de mes propres:

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

Bien que je ne peux pas garantir qu'il sera toujours là qui est la raison pour laquelle vous devez faire votre propre.

De là, il est une simple question d'utiliser un HttpWebRequest pour télécharger le le contenu de la page.

Autres conseils

Pour combiner les réponses ci-dessus » Créez un fichier php et collez ce dans ce:

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

enregistrer comme curip.php et le télécharger sur votre serveur.

Dans votre projet VB.net créer un module. Déclarer la section des importations au sommet

Imports System.Net
Imports System.IO

Et créer votre fonction:

    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

Maintenant partout dans votre code, vous pouvez émettre

Dim myIP = GetIP()

utiliser la valeur à partir de là que vous le souhaitez.

Je suis probablement être grognon, mais je ne peux pas empêcher de penser que votre adresse IP « réel » est celui qui est retourné par ifconfig (ipconfig) sur votre machine locale. 192.168.2.100 dans votre cas. Quelle que soit la traduction NAT ou tunnel qui se passe entre vous et le point de terminaison distant ne devrait pas importer, et si elle le fait, il y a une bonne chance que vous faites quelque chose qui pourrait faire que votre application fonctionne dans votre environnement actuel.

J'utiliser un site public qui retourne votre adresse IP publique en réponse.

Les facteurs clés sont:

  1. Disponibilité du service. La gestion de votre propre service garantit le plein contrôle et la connaissance quand il est disponible et quand ce n'est pas. Mais dans certains cas, il pourrait être juste trop de travail pour une tâche simple.
  2. Minimisation encombrement supplémentaire contenu dans la réponse. Il y a des sites qui vous permettent abondance d'obtenir votre adresse IP publique, mais ils le font souvent sous la forme d'une page HTML. Le petit fragment extraire de la page contenant l'adresse IP pourrait avoir besoin de code supplémentaire.

En gardant à l'esprit ces deux facteurs que je recommande cette URL: http://wtfismyip.com/text Il a l'avantage de revenir que l'adresse IP sous forme textuelle. Il existe également des versions pour:

Choisissez le format qui est plus facile pour vous d'analyser.

Vous n'avez pas besoin d'utiliser un fichier php il suffit d'utiliser un site qui montre votre ip comme ip-adress.com puis obtenir l'adresse IP à partir de là avec WebRequest et puis utilisez fonction de GetBetween.

vous amuser:)

En utilisant PHP, il peut être fait simplement:

"shaiss" a partagé le code PHP, voici le code VB.net:

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

Ceci est juste un exemple avec:

1 - formulaire

1 - TextBox

1 - Bouton (s)

Hope this helps!

J'ai eu la même question et cherché un peu seulement de se rappeler que je peux le faire avec WebBrowser!

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

Ce sous-programme est déclenchée que lorsque vous accédez à une page Web en utilisant WebBrowser.Navigate().

Le booléen gotIP existe parce que j'ai un autre sous-programme qui active sur toute la fin du document. Je ne veux pas qu'il soit déclenché plus d'une fois. Si vous n'êtes pas familier avec WebBrowser, vous assurez-vous que la page Web est assez chargé avec ReadyState. Si vous ne le faites pas, vous pouvez obtenir une exception (parce que le contenu n'est pas chargé).

Vous pouvez utiliser selon le site que vous voulez. Ce site est bon parce qu'il met votre adresse IP dans le titre. C'est bien parce qu'il y aura une étiquette de title. Dans le cas où vous ne pouvez pas utiliser ce site (ou celui qui a une étiquette unique avec votre contenu en son sein), utilisez une boucle de For Each.

                For Each instance As HtmlElement In activeProjectsWB.Document.GetElementsByTagName("InsertTagHere")
                    'do something to find the tag that contains your IP address
                Next
scroll top