Pregunta

Busco una función que me dará mi IP real, no es mi IP local. la función actualmente tengo, devuelve la IP en la red y compartir centro, que es 192.168.2.100 Pero si voy a whatismyip, entonces se le da a mi IP real.

¿Cómo podría conseguir esto utilizando VB.NET? gracias

¿Fue útil?

Solución

No hay manera de hacer esto simplemente con VB.Net. Es necesario encontrar un sitio web que le dirá (tal vez uno de los suyos?) O que necesita para interactuar con el router.

Si usted tiene un sitio web que es capaz de ejecutar cualquier tipo de aplicaciones de la página web se puede crear una página web que simplemente da salida a las del cliente (como en el equipo que se conecta a la página) dirección IP.

Tengo una de mi propia:

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

A pesar de que no puedo garantizar que siempre estará ahí por lo que usted debe hacer su propia cuenta.

A partir de ahí es una cuestión sencilla de utilizar un HttpWebRequest para descargar el el contenido de la página.

Otros consejos

Para combinar las respuestas anteriores" Crear un archivo PHP y pegar esto en él:

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

guardarlo como curip.php y subirlo a su servidor.

En su proyecto VB.net crear un módulo. Declarar la sección de las importaciones en la parte superior

Imports System.Net
Imports System.IO

Y crear su función:

    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

Ahora cualquier parte del código puede emitir

Dim myIP = GetIP()

como utilizar el valor de allí como desee.

Soy probablemente sólo ser excéntrico aquí, pero no puedo evitar pensar que su dirección IP "real" es el devuelto por ifconfig (ipconfig) en su máquina local. 192.168.2.100 en su caso. Cualquiera que sea la traducción NAT o un túnel que pasa entre usted y el extremo remoto no debe importar, y si lo hace, hay una buena probabilidad de que estás haciendo algo que podría hacer que su aplicación sólo funciona en su entorno actual.

Me gustaría utilizar un sitio a disposición del público que devuelve su dirección IP pública en respuesta.

Los factores clave son:

  1. La disponibilidad del servicio. El funcionamiento de su propio servicio garantiza un control total sobre él y el conocimiento de cuando está disponible y cuando no lo es. Pero en algunos casos podría ser demasiado trabajo para una tarea tan sencilla.
  2. Reducir al mínimo el desorden adicional contenida en la respuesta. Hay sitios de la abundancia que le permite obtener su dirección IP pública, pero a menudo lo hacen en forma de una página HTML. Extraer el pequeño fragmento de la página que contiene la dirección IP puede ser que necesite un código adicional.

Teniendo en cuenta estos dos factores recomendaría este URL: http://wtfismyip.com/text Se tiene la ventaja de volver solamente la dirección IP en forma textual. También hay versiones para:

Escoja el formato que sea más fácil para que usted pueda analizar.

No es necesario utilizar un archivo PHP sólo tiene que utilizar un sitio que muestra su IP como ip-adress.com y luego obtener la IP desde allí con WebRequest y luego usar función GetBetween .

divertirse:)

Uso de PHP que se puede hacer simplemente:

Como "shaiss" compartió el código PHP, este es el código de 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

Esto es sólo un ejemplo con:

1 - Formulario

1 - Cuadro de texto

1 - Button (s)

Espero que esto ayude!

Yo tenía la misma pregunta y busqué un poco sólo para recordar que yo puedo hacer esto con 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

Esta subrutina se activa sólo cuando se navega a una página web utilizando WebBrowser.Navigate().

Existe la booleano gotIP porque tengo otra subrutina que se activa en cualquier finalización documento. No quiero que sea activado más de una vez. Si no está familiarizado con WebBrowser, comprobar para asegurarse de que la página web se carga con suficiente ReadyState. Si no lo hace, puede obtener una excepción (ya que el contenido no está cargado).

Puede utilizar cualquier sitio que te gusta. Este sitio es bueno porque pone su dirección IP en el título. Eso es bueno, porque no va a haber una etiqueta title. En el caso de que no se puede utilizar este sitio (o uno que tiene una etiqueta única con su contenido dentro de ella), utilizar un bucle For Each.

                For Each instance As HtmlElement In activeProjectsWB.Document.GetElementsByTagName("InsertTagHere")
                    'do something to find the tag that contains your IP address
                Next
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top