当前位置: 代码迷 >> 综合 >> c#获取本地连接的ip 子网掩码 网关 DNS
  详细解决方案

c#获取本地连接的ip 子网掩码 网关 DNS

热度:46   发布时间:2023-12-13 05:34:50.0

一时兴起 想写一个获取电脑本地连接的ip 等信息的c#程序

网上流传的获取正在上网的ip较多 大致如下:

     //获取上网的ip  需要联网才可以 不联网输出127.0.0.1 并不是我想要的string name = Dns.GetHostName();IPAddress[] ipadrlist = Dns.GetHostAddresses(name);foreach (IPAddress ipa in ipadrlist){if (ipa.AddressFamily == AddressFamily.InterNetwork)MessageBox.Show(ipa.ToString());}

想找一个获取本地连接的ip的程序 网上的大多太简单了 好多程序并不完善 针对性比较强 通用的较少

所以自己用c#编了一个自认为还比较健壮的小程序 代码如下

     //获取本地连接ip 掩码 网关 DNSNetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();foreach (NetworkInterface bendi in interfaces){if (bendi.Name.ToString().Equals("本地连接") && bendi.NetworkInterfaceType.ToString().Equals("Ethernet")){IPInterfaceProperties ip = bendi.GetIPProperties();//获取Ip 掩码for (int i = 0; i < ip.UnicastAddresses.Count; i++){//不插网线会得到一个保留地址 169.254.126.164if (ip.UnicastAddresses[i].Address.AddressFamily == AddressFamily.InterNetwork){if (ip.UnicastAddresses[i].Address!=null)MessageBox.Show(ip.UnicastAddresses[i].Address.ToString());//如果不插网线 获取不了掩码 返回null if(ip.UnicastAddresses[i].IPv4Mask!=null)MessageBox.Show(ip.UnicastAddresses[i].IPv4Mask.ToString());}}//获取网关if (ip.GatewayAddresses.Count > 0)MessageBox.Show(ip.GatewayAddresses[0].Address.ToString());//获取DNS     //不要DnsAddresses[0].Address.ToString() 不正确 还有警告  “System.Net.IPAddress.Address”已过时:  if (ip.DnsAddresses.Count > 0)MessageBox.Show(ip.DnsAddresses[0].ToString());//备用DNSif (ip.DnsAddresses.Count > 1)MessageBox.Show(ip.DnsAddresses[1].ToString());}}
代码可能还有不完善的地方 仅供参考








  相关解决方案