开发者

VB.Net Return IPv4 Address

开发者 https://www.devze.com 2022-12-31 20:00 出处:网络
How can I return the IPv4 address in VB.Net?开发者_如何学C eg. 192.168.1.5Something like this Public Function GetIpV4() As String

How can I return the IPv4 address in VB.Net?开发者_如何学C

eg. 192.168.1.5


Something like this

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


Best I can do is that, will return only IPv4 address just using array functions and lambda expressions, very clean :

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


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

edit:

then you can use IPAddress.AddressFamily to find out IP familly type.

0

精彩评论

暂无评论...
验证码 换一张
取 消