zoukankan      html  css  js  c++  java
  • C# 获取本机IP(优化项目实际使用版)

    好一段时间没来更新博客了,因为密码实在记不住,烦死了,密码干脆直接用那个找回密码链接的一部分。

    吐槽完说正事了,关于C#  获取本机IP的,最开始用的是下面的,但是因为获取IP的有点多,而且难判断,忽略了。

                IPAddress[] addressList = Dns.GetHostAddresses(Dns.GetHostName());
    

        后来换成了获取所有网卡的,网上这个案例很多

                NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();

    但是获取的IP地址也还是很多,判断少,最后改为这样的:

            public static List<IPAddress> GetServerIP()
            {
                List<IPAddress> ipaddress = new List<IPAddress> ();

    //获取网卡 NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces(); try { //用于ping当前获取的网卡是否当前电脑使用的 using (Ping ping = new Ping()) { foreach (NetworkInterface ni in interfaces) { //初学应该比较难懂这段,就是说枚举里是否包含某个枚举 //Wireless80211(无线连接)是否拥有Ethernet(以太网连接),所以所有包含以太网的都可以 if ((ni.NetworkInterfaceType & NetworkInterfaceType.Ethernet) != NetworkInterfaceType.Ethernet) continue; var ippros = ni.GetIPProperties().UnicastAddresses; foreach (UnicastIPAddressInformation ip in ippros) { //还可以继续判断是否为0.0.0.0,是否172.0.0.1 之类的 //忽略不是ipv4的 if (ip.Address.AddressFamily != AddressFamily.InterNetwork) continue; //ping获取的IP地址,如果ping不通则不是当前使用的网络 var rep = ping.Send(ip.Address); if (rep.Status != IPStatus.Success) continue; //项目需要 ipaddress.Add(ip.Address); } } } } catch { //win7如果全部网卡禁用ping会报错,返回空 return ipaddress; } return ipaddress; }

    相对网上的,加了ping和Ethernet枚举判断的优化(不会忽略无线网卡)

    懒得排版了,今天事还比较多,大家凑合着看。

  • 相关阅读:
    前端 jquery获取当前页面的URL信息
    PHP合并数组及去重,PHP检测一个数组中有几个相同的
    ThinkPHP缓存技术(S(),F(),查询缓存,静态缓存)
    php 检测url
    ThinkPHP函数详解:F方法
    图片查看器(图片放大缩小功能)
    Thinkphp路由配置和静态缓存规则【原创】
    mySQL-CRUD操作(数据库的增删改查)练习题
    mySQL CRUD操作(数据库的增删改查)
    初识mySQL(关系型数据库)
  • 原文地址:https://www.cnblogs.com/zlyxm/p/7837578.html
Copyright © 2011-2022 走看看