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枚举判断的优化(不会忽略无线网卡)

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

  • 相关阅读:
    IntelJ idea下lombok 不生效的问题(@Builder等注解不生效的问题)解决,lombok Plugin插件安装
    Lombok使用
    Windows系统配置.bat启动spring boot项目jar
    SpringBoot2.X + SpringCache + redis解决乱码问题
    mac安装Redis可视化工具-Redis Desktop Manager
    带你轻松了解C# Lock 关键字
    Nginx + Docker 多阶段构建的部署学习
    WPF在Gmap.net中将Marker动起来
    WPF使用 Gmap.NET 绘制极坐标运动轨迹
    使用MySql对IdentityServer4进行持久化
  • 原文地址:https://www.cnblogs.com/zlyxm/p/7837578.html
Copyright © 2011-2022 走看看