How do I determine the local host’s IPv4 addresses?

后端 未结 11 1391
[愿得一人]
[愿得一人] 2020-12-05 13:23

How do I get only Internet Protocol version 4 addresses from Dns.GetHostAddresses()? I have the code below, and it gives me IPv4 and IPv6 addresses. I have to m

11条回答
  •  爱一瞬间的悲伤
    2020-12-05 14:02

    This is my code. And can find it on many LAN cards.

    private string GetLocalIpAddress()
    {
        string localIpAddress = string.Empty;
        NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
    
        foreach (NetworkInterface nic in nics)
        {
            if (nic.OperationalStatus != OperationalStatus.Up)
            {
                continue;
            }
    
            IPv4InterfaceStatistics adapterStat = (nic).GetIPv4Statistics();
            UnicastIPAddressInformationCollection uniCast = (nic).GetIPProperties().UnicastAddresses;
    
            if (uniCast != null)
            {
                foreach (UnicastIPAddressInformation uni in uniCast)
                {
                    if (adapterStat.UnicastPacketsReceived > 0
                        && adapterStat.UnicastPacketsSent > 0
                        && nic.NetworkInterfaceType != NetworkInterfaceType.Loopback)
                    {
                        if (uni.Address.AddressFamily == AddressFamily.InterNetwork)
                        {
                            localIpAddress = nic.GetIPProperties().UnicastAddresses[0].Address.ToString();
    
                            break;
                        }
                    }
                }
            }
        }
    
        return localIpAddress;
    }
    

提交回复
热议问题