2011-08-27 70 views
5

Cómo obtener una dirección IP en vb.net. Utilicé el código a continuación para obtener la dirección IP local, pero no se declaró que muestra dns. Puede alguien decirme cuál es que el DNS en el Código¿Cómo obtener dirección IP local usando vb?

Código VB

Imports System.Environment 
Imports System.Net 

Public Class Tester 
Public Shared Sub Main 
Dim hostname As String = Dns.GetHostName() 
Dim ipaddress As String = CType(Dns.GetHostByName(hostname).AddressList.GetValue(0), IPAddr 
ess).ToString 
Console.WriteLine("Computer Name: " & hostname & " IP Address: " & ipaddress) 
End Sub 

End Class 
+0

¿Sabe que una máquina puede tener una o varias direcciones IP? –

+2

ahora ha cambiado completamente la pregunta: primero pregunta por 'Dns', ahora está preguntando sobre iüp del cliente conectado ... SI tiene una segunda pregunta, ¡debe abrir una segunda pregunta y NO cambiar la primera! Le devolví la pregunta al original ... por favor vote/marque como aceptado si alguna respuesta fue de ayuda Y abra una segunda pregunta sobre "cliente IP"! – Yahia

+2

obviamente alguien que no sabe hacer una pregunta de forma educada, aceptable, civil, humana, normal, decente – Martin

Respuesta

1

Utilice esta:

HttpContext.Current.Request.UserHostAddres 

Espero que esto ayude.

0

ips = Dns.GetHostAddresses (nombre de host)

aquí es un ejemplo de código MSDN

0

Puede obtener la dirección IP local del sistema mediante el siguiente código:

Dim host As String = System.Net.Dns.GetHostName() 
Dim LocalHostaddress As String = System.Net.Dns.GetHostByName(host).AddressList(1).ToString() 
+0

Realmente esta es una respuesta mala y típica. ¿Qué sucede cuando el IP que deseamos está en el índice 0 o 2 de 'AddressList()'? – ElektroStudios

+0

Esta sería una solución mejor, pero aún no sería 100% eficiente: Devolución (desde IP como Net.IPAddress en System.Net.Dns.GetHostEntry (System.Net.Dns.GetHostName()). AddressList() Donde no IP.ToString.Contains (":")). FirstOrDefault.ToString – ElektroStudios

+0

¿Qué sucede si se instaló un adaptador de bucle invertido o un adaptador de LAN Bluetooth? Está asumiendo que el adaptador de red 1 es el correcto sin verificar. El problema es que la matriz de índice comienza en 0, no en uno. Es posible que ni siquiera haya un adaptador 1 en la matriz. La mejor forma es hacer que iterar a través de los adaptadores y [decidir] cuál es la correcta mediante validación simple para probar las direcciones ipv4, ipv6 o bt. – Matth3w

3

Dado que tengo la sensación eso, la pregunta (en el título) aún no está completamente respondida ...

Dim hostName = System.Net.Dns.GetHostName() 
For Each hostAdr In System.Net.Dns.GetHostEntry(hostName).AddressList() 

    ' If you just want to write every IP 
    Console.WriteLine("Name: " & hostName & " IP Address: " & hostAdr.ToString() 

    ' If you want to look if the device is member of a specific network 
    If hostAdr.ToString().StartsWith("192.168.1.") Then DoSomething() : Exit For 

    ' I think you get the idea ^^ 
    ' ... 
Next 

... obviamente esto no es exactamente lo que solicitó el OP, pero solo por el título y los enlaces de google, esto debería responder a lo que la gente que viene aquí está buscando.

Btw GetHostByName() parece estar obsoleto, GetHostEntry() funciona de la misma manera, sin lanzar una advertencia.

0
Dim ipaddress As String = 
    Dns.GetHostEntry(Dns.GetHostName).AddressList(0).ToString 

Esto es probable la dirección IPv6

Y

Dim ipaddress As String = 
    Dns.GetHostEntry(Dns.GetHostName).AddressList.FirstOrDefault(() => { }, 
    (ip.AddressFamily = AddressFamily.InterNetwork)).ToString 

Esto le dará dirección IPv4

Mi VB es oxidado por lo que aquí es un código de C# que funciona para mí.

using System.Linq; 

using System.Net.Sockets; 

string IPaddress = 
    Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString(); //For Ipv6 

string IPaddress = 
    Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ip => 
    ip.AddressFamily == AddressFamily.InterNetwork).ToString(); //For Ipv4 

Espero que esto ayude.

1
Dim hostName = System.Net.Dns.GetHostName() 
    For Each hostAdr In System.Net.Dns.GetHostEntry(hostName).AddressList() 

     ' If you just want to write every IP 
     'Console.WriteLine("Name: " & hostName & " IP Address: " & hostAdr.ToString()) 
     Me.RichTextBox1.Text = hostAdr.ToString 

     'If you want to look if the device is member of a specific network 

     ' ... 
    Next 
Cuestiones relacionadas