Code Bye

用Dns.GetHostAddresses筛选ip地址

我用
addressList = Dns.GetHostAddresses( Dns.GetHostName() );
得到的addressList[0] = {fe80::70d5:be7b:af63:346f%14};
     addressList[1] = {172.28.52.17};

请问addressList[0]数据代表什么?


2分
IPV6的地址
IP V6地址吧,这种在有Wifi的本本上很常见
你可以筛选
Dns.GetHostAddresses(MachineName)
    .Where(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
    .First()
请问ip是什么?
我是这样写的代码:
System.Net.IPAddress[] addressList = Dns.GetHostAddresses( Dns.GetHostName() );
如何在addressList中把IPv4筛选出来?

5分
Dns.GetHostAddresses(MachineName)
    .Where(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
    .First()

是筛选ip v4 
Dns.GetHostAddresses(MachineName)
    .Where(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
    .First()
是筛选V6的ip地址

引用 3 楼 lory17 的回复:

引用 2 楼 dongxinxi 的回复:
IP V6地址吧,这种在有Wifi的本本上很常见
你可以筛选
Dns.GetHostAddresses(MachineName)
    .Where(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
    .First()

请问ip是什么?……

我刚才试了一下,这样就可以得到IPv4的地址了,请问这样写规范吗?
IPAddress addressList2 = Dns.GetHostAddresses( Dns.GetHostName() ).Where( ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork ).First();
textBox1.Text = addressList2.ToString();


13分
你所谓的规范指什么?
需要注意的是:
1.当所有本地连接都被禁用,取到的将是回环地址127.0.0.1
2.当目标机器的网卡出现问题系统无法识别,有可能一个都取不到,导致.First()抛出异常
3.当有多块网卡时(包括虚拟网卡),上述方法取到的就不准确了,需根据情况来定
引用 2 楼 dongxinxi 的回复:

IP V6地址吧,这种在有Wifi的本本上很常见
你可以筛选
Dns.GetHostAddresses(MachineName)
    .Where(ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
    .First()

IPAddress addressList2 = Dns.GetHostAddresses( Dns.GetHostName() ).Where( ip => ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork ).First();
确定有Dns.GetHostAddresses().Where().First();的格式? 为啥我找不到…..
AddressFamily 这个可以理解~~


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明用Dns.GetHostAddresses筛选ip地址