默认情况下获取IPV4地址

时间:2014-08-24 23:22:04

标签: c# ipv4

IPHostEntry HostInformation = Dns.GetHostEntry(Dns.GetHostName());
//IPAddress IP = HostInformation.AddressList[0].MapToIPv4();
Console.WriteLine(IP.ToString());

使用上面的代码片段我正在尝试获取运行应用程序的当前用户的IPV4地址,我的网络接口也启用了IPV6。 HostInformation正在填充V6地址:

  

FE80 :: D168:1665:65℃:7c2e%12

试图获得:

  

192.168.0.2

MapToIPV4返回:

  

6.92.124.46

拥有:

        foreach (var Element in HostInformation.AddressList)
        {
            Console.WriteLine(Element + "\n\n");
        }

显示四个地址:

  

FE80 :: D168:1665:65℃:7c2e%12

     

FE80 :: 448:FF7:A313:2477%18

     

192.168.0.2

     

2001:0:5ef5:石川铃华:448:FF7:A313:2477

因此,使用该逻辑,HostInformation.AddressList[2];将包含我的结果。但是,这总是V4地址吗?数组中的第三个元素是否总是存在?总的来说。如何寻找数组来查找V4地址并返回相应的索引?

1 个答案:

答案 0 :(得分:1)

根据@ 500-InternalServerError的评论搜索文档后,我开发了这个:

    public IPAddress GetIPV4(IPHostEntry HostInformation)
    {
        IPAddress[] IP = HostInformation.AddressList;
        int index = 0;
        foreach (IPAddress Address in IP)
        {
            if (Address.AddressFamily.Equals(AddressFamily.InterNetwork))
            {
                break;
            }
            index++;
        }
        return HostInformation.AddressList[index];
    }

由以下人员调用:

IPAddress IP = GetIPV4(Dns.GetHostEntry(Dns.GetHostName()));

测试并使用3台机器,每台机器的接口/地址从1 V4到4地址