IP Address Lookup in VB.net (XP vs Windows 7)

允我心安 提交于 2019-12-05 07:14:49

问题


Currently I use the following code to retrieve the IP address of the local workstation...

strIPAddress = System.Net.Dns.GetHostEntry(strComputerName).AddressList(0).ToString()

This is fine for the Windows XP workstations. However, in Vista and Windows 7, this returns the IPv6 address which is not used at all. Is there a method of setting this to work so it always returns the IPv4 address regardless of platform?

I know I can increment the AddressList value to 1 and get the correct IP in Windows 7. The bad part is that this requires going through the motions of identifying the OS and choosing one or the other.

The must be some way of specifying IPv4 only. Perhaps getting a result from DNS on the network rather than the workstation itself?


回答1:


You just need to loop through the AddressList looking at the AddressFamily seeing which is set to InterNetwork

Dim IP4 = New List(Of IPAddress)(Dns.GetHostEntry(strComputer).AddressList).Find(Function(f) f.AddressFamily = Sockets.AddressFamily.InterNetwork)

Or the longer way:

    Dim IP4 As IPAddress
    Dim AL = Dns.GetHostEntry(strComputer).AddressList
    For Each A In AL
        If A.AddressFamily = Sockets.AddressFamily.InterNetwork Then
            IP4 = A
            Exit For
        End If
    Next


来源:https://stackoverflow.com/questions/2546225/ip-address-lookup-in-vb-net-xp-vs-windows-7

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!