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

来源:互联网 发布:淘宝一个钻石是多少级 编辑:程序博客网 时间:2024/04/28 02:32

原理,首先,要用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
原创粉丝点击