下面显示了如何获取本机上所有网络接口及IP地址的相关信息

它们层次关联为:

一个本机可以有多个网络接口,这些接口包括实际接口与虚拟接口。

每个网络接口可以得到多个IP地址,可能是IPV4也可能是IPV6。

得到本机的真实IP地址的原理为:

网络接口的状态必须为UP,并且接口类型是Ethernet,并且IP 地址的地址家族类型为 InternNetwork 也就是IPV6

以下是代码:

 //1、手动创建一个IPIPAddress ip = new IPAddress(new byte[] { 192, 168, 100, 1 });netInfo = string.Format("手动创建的ip1:{0}\r\n", ip.ToString());ip = IPAddress.Parse("192.168.60.1");   //推荐用这个方法创建一个IPnetInfo += string.Format("手动创建的ip2:{0}\r\n\r\n", ip.ToString());//2、获取本址IPIPAddress[] ips = Dns.GetHostAddresses(""); //当参数为""时返回本机所有IPnetInfo += "通过Dns.GetHostAddresses(\"\")获取本机所有IP信息:\r\n";for (int i = 0; i < ips.Length; i++){netInfo += string.Format("{0}) [ip:]{1},  [ip类型:]{2}\r\n",i.ToString(),ips[i].ToString(),ips[i].AddressFamily);}//3、获取网卡的名字等信息netInfo += "\r\n以下是网卡接口数组中的信息。\r\n通过NetworkInterface.GetAllNetworkInterfaces()获取本机所有网卡接口信息:\r\n";int count = 0;foreach (NetworkInterface netInt in NetworkInterface.GetAllNetworkInterfaces()){count++;netInfo += string.Format("{0})接口名:{1}\r\n    接口类型:{2}\r\n    接口MAC:{3}\r\n    接口速度:{4}\r\n    接口描述信息:{5}\r\n", count,netInt.Name, netInt.NetworkInterfaceType,netInt.GetPhysicalAddress().ToString(),netInt.Speed/1000/1000,netInt.Description );netInfo += "    接口配置的IP地址:\r\n";foreach (UnicastIPAddressInformation ipIntProp in netInt.GetIPProperties().UnicastAddresses.ToArray<UnicastIPAddressInformation>()){netInfo += string.Format("    接口名:{0},  ip:{1},  ip类型:{2}\r\n",netInt.Name, ipIntProp.Address.ToString(),ipIntProp.Address.AddressFamily);}}netInfo += "\r\n";//4、进阶:如果本机有多个IP 如何获得 **** 重要 ****foreach (var item in NetworkInterface.GetAllNetworkInterfaces()){if (item.OperationalStatus == OperationalStatus.Up && item.NetworkInterfaceType == NetworkInterfaceType.Ethernet){//先获取需要的接口。两个条件确定当前正在使用的网口。1、接口状态为up;2、接口类型为Ethernet。count = 0;foreach (var ipInfo in item.GetIPProperties().UnicastAddresses.ToArray()){if (ipInfo.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork){netInfo += string.Format("本机正在使用接口为:{0}\r\n本机正在使用的IP为:{1}", item.Name, ipInfo.Address.ToString());break;}}}                }//与上面一样,只不过用了Dns.GetHostAddresses()的方法IPAddress[] dnsIps = Dns.GetHostAddresses(Dns.GetHostName());for (int i = 0; i < dnsIps.Length; i++){if (dnsIps[i].AddressFamily==System.Net.Sockets.AddressFamily.InterNetwork){netInfo += "\r\nDns.GetHostAddresses()得到本机正在使用的IP为:" + dnsIps[i].ToString();}}

C#获取本机上所有网络接口及真实IP地址信息相关推荐

  1. PHP、Tomcat获取Nginx代理后的客户端真实IP

    PHP.Tomcat获取Nginx代理后的客户端真实IP 文章目录 PHP.Tomcat获取Nginx代理后的客户端真实IP 一.PHP获取Nginx代理后客户端真实IP Nginx配置 PHP配置 ...

  2. 通过子域名查询真实ip地址

    方法原理 开启反向代理或CDN部署需要一定的时间成本和经济成本,部分网站会采用关键域名使用CDN或反向代理的方法,部分子域名由于进行内部测试的原因未及时设置CDN或反向代理,用户可通过子域名查找工具尝 ...

  3. 老大说,网上这种获取真实IP地址的方法不对,我不信...

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:蔡永吉  来源:http://bit.ly/33H8RMm ...

  4. 获取客户端真实IP地址

    Java-Web获取客户端真实IP: 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP. 一般分为两种情况: ...

  5. PHP获取用户真实IP地址

    PHP获取用户真实IP地址 <?phpfunction getRealIpAddr() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SER ...

  6. asp.net如何获取客户端真实IP地址

    目前网上流行的所谓"取真实IP地址"的方法,都有bug,没有考虑到多层透明代理的情况. 多数代码类似: string IpAddress = (HttpContext.Curren ...

  7. Java获取请求客户端的真实IP地址

    整理网友的材料,最后有源码,亲测能解决所有java获取IP真实地址的问题 整理的这里: 1.链接1 2.链接2 JSP里,获取客户端的IP地址的方法是: request.getRemoteAddr() ...

  8. 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  9. JSP获取浏览者真实IP地址方法

    2019独角兽企业重金招聘Python工程师标准>>> 我们知道在JSP里,获取网页客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都 ...

最新文章

  1. 《Python编程从入门到实践》学习笔记3:列表
  2. 详解Google第二代TPU 既能推理又能训练 性能霸道
  3. 获得MFC窗口其它类指针的方法
  4. 深度揭秘:大数据时代企业卖技术还是卖数据?
  5. 微软一站式示例代码库 2012 年2月示例代码更新。8个全新示例为您的开发保驾护航...
  6. 使用DelayExchange
  7. css 宽高最大值最小值 0303
  8. 通过少儿英语入门孩子的自信更多
  9. 百度快照被劫持跳转到博彩页面的解决办法
  10. 软件架构设计——软件架构风格
  11. oracle游标fetch_SQL游标@@ FETCH_STATUS函数概述
  12. MSP借助五招让中小企业签约云计算服务
  13. VisualStudio2005技巧集合--打造自己的CodeSnippet
  14. 【汇编实战开发笔记】80x86汇编基础的三大块知识
  15. 【Excel】数据的排序、筛选和分类汇总
  16. Ubuntu下启动图形界面startx报错connection to X server lost
  17. ●UVA 11021 tunnello
  18. Discuz论坛密码与密保加密规则
  19. Linux下rsync安装与配置
  20. 基于windows7的usb多点触控设备

热门文章

  1. word 插入图片显示不全
  2. Tableau图表:气泡图,文字云,树状图等
  3. 高性能Java代码的最佳实践
  4. K线形态识别_双飞乌鸦
  5. Matlab中interp1()和interp2()的用法
  6. 分布式系统与网络分区
  7. 如何下载打印计算机二级准考证(江西)
  8. Qt之图片自适应QLabel的大小
  9. Hbase(一)入门
  10. 2009年5月30日