C#获取IP4或IP6协议的IP地址

原理,首先,要用System.Net.IPHostEntry把IP解析成IP实体,然后利用System.Net.IPAddress来解析IP列表,值得注意的是,IP4的IP地址,可以用AddressList[0]获取,IP6的IP地址,AddressList[1]获取

判断协议的方法,很简单,利用System.Net.Sockets.AddressFamily可以判断IP类型。


对于 IPv4,返回 System.Net.Sockets.AddressFamily.InterNetwork;对于 IPv6,返回 System.Net.Sockets.AddressFamily.InterNetworkV6

如图:


所以,可以用如下代码判断并获取正确的IP地址。


[csharp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. private IPAddress getIdAddress()  
  2.  {  
  3.     
  4.      //IPHostEntry ipEntity = Dns.GetHostEntry(Dns.GetHostName());  
  5.      IPAddress ipAddr = ipEntity.AddressList[0];  
  6.     
  7.      //IPAddress ipAddr = Dns.GetHostAddresses(Dns.GetHostName())[0];  
  8.      //if (ipAddr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)//判断是否IP6协议  
  9.      //{  
  10.      //    ipAddr = Dns.GetHostEntry(Dns.GetHostName()).AddressList[1];  
  11.      //}  
  12.      IPAddress ipAddr = null;  
  13.      IPAddress [] arrIP = Dns.GetHostAddresses(Dns.GetHostName());  
  14.      foreach (IPAddress ip in arrIP)  
  15.      {  
  16.          if (System.Net.Sockets.AddressFamily.InterNetwork.Equals(ip.AddressFamily))  
  17.          {  
  18.              ipAddr = ip;  
  19.          }  
  20.          else if (System.Net.Sockets.AddressFamily.InterNetworkV6.Equals(ip.AddressFamily))  
  21.          {  
  22.              ipAddr = ip;  
  23.          }  
  24.      }  
  25.      return ipAddr;  
  26.  }  

转载出处: http://hi.baidu.com/xiuyuanvip/item/153d02dba9b38bcb1a72b4db
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值