C# 默认情况下获取IPV4地址
使用上面的代码片段,我试图获取运行应用程序的当前用户的IPV4地址,我的网络接口也启用了IPV6<代码>主机信息正在使用V6地址填充: fe80::d168:1665:65c:7c2e%12 在尝试获取时: 192.168.0.2C# 默认情况下获取IPV4地址,c#,ipv4,C#,Ipv4,使用上面的代码片段,我试图获取运行应用程序的当前用户的IPV4地址,我的网络接口也启用了IPV6主机信息正在使用V6地址填充: fe80::d168:1665:65c:7c2e%12 在尝试获取时: 192.168.0.2 maptopv4返回: 6.92.124.46 具有: IPHostEntry HostInformation = Dns.GetHostEntry(Dns.GetHostName()); //IPAddress IP = HostInformation.AddressLis
maptopv4
返回:
6.92.124.46
具有:
IPHostEntry HostInformation = Dns.GetHostEntry(Dns.GetHostName());
//IPAddress IP = HostInformation.AddressList[0].MapToIPv4();
Console.WriteLine(IP.ToString());
显示四个地址:
fe80::d168:1665:65c:7c2e%12
fe80::448:ff7:a313:2477%18
192.168.0.2
2001:0:5ef5:79fb:448:ff7:a313:2477
因此,使用这种逻辑,
HostInformation.AddressList[2]代码>将包含我的结果。但是,它是否总是V4地址?数组中的第三个元素是否始终存在?所以总体来说。如何查找数组以查找V4地址并返回适当的索引 根据@500 InternalServerError的评论搜索文档后,我得出以下结论:
foreach (var Element in HostInformation.AddressList)
{
Console.WriteLine(Element + "\n\n");
}
由以下人员调用:
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];
}
测试并在3台机器上工作,每台机器的接口/地址从1 V4到4个地址如果我没记错,我现在在IPAddress
中的某个地方漏掉了一个属性的名称,该属性具有结构所代表的地址类型。@500 InternalServerError感谢headsup,我会查看文档以找到it@500-InternalServerError感谢您提供的指针。如果您对解决方案感兴趣,请检查下面的答案
IPAddress IP = GetIPV4(Dns.GetHostEntry(Dns.GetHostName()));