C#获取本机上所有网络接口及真实IP地址信息
下面显示了如何获取本机上所有网络接口及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地址信息相关推荐
- PHP、Tomcat获取Nginx代理后的客户端真实IP
PHP.Tomcat获取Nginx代理后的客户端真实IP 文章目录 PHP.Tomcat获取Nginx代理后的客户端真实IP 一.PHP获取Nginx代理后客户端真实IP Nginx配置 PHP配置 ...
- 通过子域名查询真实ip地址
方法原理 开启反向代理或CDN部署需要一定的时间成本和经济成本,部分网站会采用关键域名使用CDN或反向代理的方法,部分子域名由于进行内部测试的原因未及时设置CDN或反向代理,用户可通过子域名查找工具尝 ...
- 老大说,网上这种获取真实IP地址的方法不对,我不信...
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:蔡永吉 来源:http://bit.ly/33H8RMm ...
- 获取客户端真实IP地址
Java-Web获取客户端真实IP: 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP. 一般分为两种情况: ...
- PHP获取用户真实IP地址
PHP获取用户真实IP地址 <?phpfunction getRealIpAddr() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SER ...
- asp.net如何获取客户端真实IP地址
目前网上流行的所谓"取真实IP地址"的方法,都有bug,没有考虑到多层透明代理的情况. 多数代码类似: string IpAddress = (HttpContext.Curren ...
- Java获取请求客户端的真实IP地址
整理网友的材料,最后有源码,亲测能解决所有java获取IP真实地址的问题 整理的这里: 1.链接1 2.链接2 JSP里,获取客户端的IP地址的方法是: request.getRemoteAddr() ...
- 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- JSP获取浏览者真实IP地址方法
2019独角兽企业重金招聘Python工程师标准>>> 我们知道在JSP里,获取网页客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都 ...
最新文章
- 《Python编程从入门到实践》学习笔记3:列表
- 详解Google第二代TPU 既能推理又能训练 性能霸道
- 获得MFC窗口其它类指针的方法
- 深度揭秘:大数据时代企业卖技术还是卖数据?
- 微软一站式示例代码库 2012 年2月示例代码更新。8个全新示例为您的开发保驾护航...
- 使用DelayExchange
- css 宽高最大值最小值 0303
- 通过少儿英语入门孩子的自信更多
- 百度快照被劫持跳转到博彩页面的解决办法
- 软件架构设计——软件架构风格
- oracle游标fetch_SQL游标@@ FETCH_STATUS函数概述
- MSP借助五招让中小企业签约云计算服务
- VisualStudio2005技巧集合--打造自己的CodeSnippet
- 【汇编实战开发笔记】80x86汇编基础的三大块知识
- 【Excel】数据的排序、筛选和分类汇总
- Ubuntu下启动图形界面startx报错connection to X server lost
- ●UVA 11021 tunnello
- Discuz论坛密码与密保加密规则
- Linux下rsync安装与配置
- 基于windows7的usb多点触控设备