2011-08-27 13 views
5

Come ottenere l'indirizzo IP in vb.net. Ho usato sotto il codice per ottenere l'indirizzo IP locale ma esso mostra che il DNS non è dichiarato. uno può dirmi che cosa è che il DNS del CodiceCome ottenere l'indirizzo IP locale usando vb?

VB Codice

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

Sapete che una macchina può non avere nessuno o più indirizzi IP? –

+2

ora hai completamente cambiato la domanda - prima ti stai chiedendo di 'Dns', ora stai chiedendo di iüp del client connesso ... SE hai una seconda domanda devi aprire una seconda domanda e NON cambiare la prima !!! Ho ribaltato la tua domanda a quella originale ... per favore, revoca/vota come accettata se una risposta è di aiuto E apri una seconda domanda su "client ip"! – Yahia

+2

ovviamente qualcuno che non sa fare una domanda in modo educato, accettabile, civile, umano, normale, decente – Martin

risposta

1

Utilizzare questa:

HttpContext.Current.Request.UserHostAddres 

Spero che questo aiuti.

0

ips = Dns.GetHostAddresses (hostname)

ecco un esempio di codice MSDN

0

È possibile ottenere l'indirizzo IP locale del sistema usando il codice qui sotto:

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

In realtà questa è una brutta e tipica risposta. cosa succede quando l'IP che desideriamo è l'indice 0 o 2 di 'AddressList()'? – ElektroStudios

+0

Questa sarebbe una soluzione migliore, ma non ancora efficiente al 100%: Ritorno (da IP come Net.IPAddress in System.Net.Dns.GetHostEntry (System.Net.Dns.GetHostName()). AddressList() Dove non IP.ToString.Contains (":")). FirstOrDefault.ToString – ElektroStudios

+0

Cosa fare se è stata installata una scheda loopback o un adattatore LAN Bluetooth? Si suppone che l'adattatore di rete 1 sia quello corretto senza controllo. Il problema è: l'array di indici inizia da 0, non uno. Potrebbe non esserci nemmeno un adattatore 1 nell'array. Il modo migliore è di forzare l'iterazione attraverso gli adattatori e [decidere] quale è corretto con semplici mezzi di validazione per verificare gli indirizzi ipv4, ipv6 o bt. – Matth3w

3

Da quando ho la sensazione che, la domanda (nel titolo) non è ancora completamente risposta ...

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 

... ovviamente questo non è esattamente quello che l'OP chiedeva, ma solo dal titolo e dai link di Google, questo dovrebbe rispondere a ciò che le persone che stanno venendo qui stanno cercando.

Btw GetHostByName() sembra essere deprecato, GetHostEntry() come questo funziona allo stesso modo, senza lanciare un avviso.

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

Questo sarà molto probabilmente darà l'indirizzo IPv6

E

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

Questo darà indirizzo IPv4

mio VB è arrugginito: ecco un codice C# che funziona per me.

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 

Spero che questo aiuti.

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 
Problemi correlati