2010-05-25 4 views
1

Comment puis-je renvoyer l'adresse IPv4 dans VB.Net?Adresse IPv4 de retour VB.Net

par ex. 192.168.1.5

+0

Voulez-vous que l'adresse IP d'un nom d'hôte donné? Ou l'adresse IP d'une demande entrante? Ou l'adresse IP de la machine locale (qui pourrait avoir plusieurs adresses)? – Jason

Répondre

0
Dim myClientMachineAddressList As IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName()) 
Dim myClientMachineIP As String = myClientMachineAddressList.AddressList(0).ToString() 

modifier:

vous pouvez alors utiliser IPAddress.AddressFamily pour trouver le type familliale IP.

+1

Va retourner IPv6 si c'est là (je pense) – PostMan

+0

@PostMan - merci pour le commentaire que j'ai corrigé. – Cicik

4

Quelque chose comme ça

Public Function GetIpV4() As String 

    Dim myHost As String = Dns.GetHostName 
    Dim ipEntry As IPHostEntry = Dns.GetHostEntry(myHost) 
    Dim ip As String = "" 

    For Each tmpIpAddress As IPAddress In ipEntry.AddressList 
    If tmpIpAddress.AddressFamily = Sockets.AddressFamily.InterNetwork Then 
     Dim ipAddress As String = tmpIpAddress.ToString 
     ip = ipAddress 
     exit for 
    End If 
    Next 

    If ip = "" Then 
    Throw New Exception("No 10. IP found!") 
    End If 

    Return ip 

End Function 
+0

+1 bien écrit :) – Cicik

1

mieux que je peux faire est que, ne renverra que IPv4 adresse tout en utilisant les fonctions de tableau et des expressions lambda, très propre:

Public Function GetHostEntryIPv4(ByVal addr As String) As IPHostEntry 

    Dim ipHostInfo As IPHostEntry = Dns.GetHostEntry(addr) 

    If Not IsNothing(ipHostInfo) Then 
     ipHostInfo.AddressList = Array.FindAll(ipHostInfo.AddressList, Function(n As IPAddress) n.AddressFamily = AddressFamily.InterNetwork) 
    End If 

    GetHostEntryIPv4 = ipHostInfo 

End Function 
Questions connexes