<sup id="sjju3"><noscript id="sjju3"></noscript></sup>
    <big id="sjju3"></big>

  • <blockquote id="sjju3"></blockquote>
    <blockquote id="sjju3"></blockquote>

      <td id="sjju3"></td>

      <big id="sjju3"></big>
        <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
      1. asp.net core 获取 MacAddress 地址方法示例

         更新时间:2019年02月18日 09:34:24   作者:lindexi   我要评论

        这篇文章主要介绍了asp.net core获取MacAddress地址方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

        本文告诉大家如何在 dotnet core 获取 Mac 地址

        因为在 dotnetcore 是没有直接和硬件相关的,所以无法通过 WMI 的方法获取当?#21543;?#22791;的 Mac 地址

        但是在 dotnet core 可以使用下面的代码拿到本机所有的网卡地址,包括物理网卡和虚拟网卡

        IPGlobalProperties computerProperties = IPGlobalProperties.GetIPGlobalProperties();
           NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
        
           Console.WriteLine("Interface information for {0}.{1}  ",
            computerProperties.HostName, computerProperties.DomainName);
           if (nics == null || nics.Length < 1)
           {
            Console.WriteLine(" No network interfaces found.");
            return;
           }
        
           Console.WriteLine(" Number of interfaces .................... : {0}", nics.Length);
           foreach (NetworkInterface adapter in nics)
           {
            Console.WriteLine();
            Console.WriteLine(adapter.Name + "," + adapter.Description);
            Console.WriteLine(String.Empty.PadLeft(adapter.Description.Length, '='));
            Console.WriteLine(" Interface type .......................... : {0}", adapter.NetworkInterfaceType);
            Console.Write(" Physical address ........................ : ");
            PhysicalAddress address = adapter.GetPhysicalAddress();
            byte[] bytes = address.GetAddressBytes();
            for (int i = 0; i < bytes.Length; i++)
            {
             // Display the physical address in hexadecimal.
             Console.Write("{0}", bytes[i].ToString("X2"));
             // Insert a hyphen after each byte, unless we are at the end of the 
             // address.
             if (i != bytes.Length - 1)
             {
              Console.Write("-");
             }
            }
        
            Console.WriteLine();
           }
        
        

        运行代码,下面是控制台

        Interface information for lindexi.github
            Number of interfaces .................... : 6
        
            Hyper-V Virtual Ethernet Adapter #4
            ===================================
            Interface type .......................... : Ethernet
            Physical address ........................ : 00-15-5D-96-39-03
        
            Hyper-V Virtual Ethernet Adapter #3
            ===================================
            Interface type .......................... : Ethernet
            Physical address ........................ : 1C-1B-0D-3C-47-91
        
            Software Loopback Interface 1
            =============================
            Interface type .......................... : Loopback
            Physical address ........................ :
        
            Microsoft Teredo Tunneling Adapter
            ==================================
            Interface type .......................... : Tunnel
            Physical address ........................ : 00-00-00-00-00-00-00-E0
        
            Hyper-V Virtual Ethernet Adapter
            ================================
            Interface type .......................... : Ethernet
            Physical address ........................ : 5A-15-31-73-B0-9F
        
            Hyper-V Virtual Ethernet Adapter #2
            ===================================
            Interface type .......................... : Ethernet
            Physical address ........................ : 5A-15-31-08-13-B1
        

        但是可以看到里面有很多不需要使用的网卡,从 堆栈 网找到的方法获取当前有活跃的 ip 的网卡可以通过先判断是不是本地?#19981;?#32593;络等,然后判断有没有网络

        foreach (NetworkInterface adapter in nics.Where(c =>
            c.NetworkInterfaceType != NetworkInterfaceType.Loopback && c.OperationalStatus == OperationalStatus.Up))
        

        获取当前的网卡有没 ip 有 ip 才是需要的

        IPInterfaceProperties properties = adapter.GetIPProperties();
        
            var unicastAddresses = properties.UnicastAddresses;
            foreach (var temp in unicastAddresses.Where(temp =>
             temp.Address.AddressFamily == AddressFamily.InterNetwork))
            {
             // 这个才是需要的网卡
            }
        
        

        简单输出网卡使用 adapter.GetPhysicalAddress().ToString() 输出,如果需要输出带连接的请使用 GetAddressBytes 然后自己输出

        下面的代码是?#39029;?#20986;来的,可以直接使用

        public static void GetActiveMacAddress(string separator = "-")
          {
           NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces();
        
           //Debug.WriteLine("Interface information for {0}.{1}  ",
           // computerProperties.HostName, computerProperties.DomainName);
           if (nics == null || nics.Length < 1)
           {
            Debug.WriteLine(" No network interfaces found.");
            return;
           }
        
           var macAddress = new List<string>();
        
           //Debug.WriteLine(" Number of interfaces .................... : {0}", nics.Length);
           foreach (NetworkInterface adapter in nics.Where(c =>
            c.NetworkInterfaceType != NetworkInterfaceType.Loopback && c.OperationalStatus == OperationalStatus.Up))
           {
            //Debug.WriteLine("");
            //Debug.WriteLine(adapter.Name + "," + adapter.Description);
            //Debug.WriteLine(string.Empty.PadLeft(adapter.Description.Length, '='));
            //Debug.WriteLine(" Interface type .......................... : {0}", adapter.NetworkInterfaceType);
            //Debug.Write(" Physical address ........................ : ");
            //PhysicalAddress address = adapter.GetPhysicalAddress();
            //byte[] bytes = address.GetAddressBytes();
            //for (int i = 0; i < bytes.Length; i++)
            //{
            // // Display the physical address in hexadecimal.
            // Debug.Write($"{bytes[i]:X2}");
            // // Insert a hyphen after each byte, unless we are at the end of the 
            // // address.
            // if (i != bytes.Length - 1)
            // {
            //  Debug.Write("-");
            // }
            //}
        
            //Debug.WriteLine("");
        
            //Debug.WriteLine(address.ToString());
        
            IPInterfaceProperties properties = adapter.GetIPProperties();
        
            var unicastAddresses = properties.UnicastAddresses;
            if (unicastAddresses.Any(temp => temp.Address.AddressFamily == AddressFamily.InterNetwork))
            {
             var address = adapter.GetPhysicalAddress();
             if (string.IsNullOrEmpty(separator))
             {
              macAddress.Add(address.ToString());
             }
             else
             {
              macAddress.Add(string.Join(separator, address.GetAddressBytes()));
             }
            }
           }
          }
        
        

        上面的方法不仅是在 dotnet core 可以使用,在 dotnet framework 程序同样调用,但是在 dotnet framework 还可以通过 WMI 获取

        在 dotnet framework 使用 WMI 获取 MAC 地址方法

        var managementClass = new ManagementClass("Win32_NetworkAdapterConfiguration");
             var managementObjectCollection = managementClass.GetInstances();
             foreach (var managementObject in managementObjectCollection.OfType<ManagementObject>())
             {
              using (managementObject)
              {
               if ((bool) managementObject["IPEnabled"])
               {
                if (managementObject["MacAddress"] == null)
                {
                 return string.Empty;
                }
        
                return managementObject["MacAddress"].ToString().ToUpper();
               }
              }
             }
        
        

        输出的格式是 5A:15:31:73:B0:9F 同时输出是一个网卡

        NetworkInterface.GetPhysicalAddress Method (System.Net.NetworkInformation)

        PhysicalAddress Class (System.Net.NetworkInformation)

        c# - .NET Core 2.x how to get the current active local network IPv4 address? - Stack Overflow

        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

      2. .Net Core中使用ref和Span<T>提高程序性能的实现代码

        .Net Core中使用ref和Span<T>提高程序性能的实现代码

        这篇文章主要介绍了.Net Core中使用ref和Span<T>提高程序性能的简单实现代码,需要的朋友可以参考下
        2017-05-05
      3. asp.net导出Excel乱码的原因及解决方法

        asp.net导出Excel乱码的原因及解决方法

        asp.net导出Excel乱码的情况时有发生,本文有个不错的解决方法,大家可以参考下
        2014-02-02
      4. 真正的获取客户端真实IP地址及利弊分析

        真正的获取客户端真实IP地址及利弊分析

        目前网上流行的所谓“取真实IP地址”的方法,都有bug,没有考虑到多层透明代理的情况。
        2009-11-11
      5. 总结十条.NET异常处理建议

        总结十条.NET异常处理建议

        .NET中从始至终要紧记异常处理的策略?#21495;?#20986;具体的一个异常,而不是只抛出Exception类型的异常,这样能方便我们捕获对应类型的异常。我们在编写代码时要注意考虑到应用程序最差的情况;显示有好的信息,并提供?#23454;?#30340;管理员联系信息
        2015-11-11
      6. .NET Core跨平台执行命令、脚本的方法详细

        .NET Core跨平台执行命令、脚本的方法详细

        这篇文章主要给大家介绍了关于.NET Core跨平台执行命令、脚本的相关资?#24076;?#25991;中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
        2018-05-05
      7. .net调用JScript脚本及JS url?#29992;?#35299;密

        .net调用JScript脚本及JS url?#29992;?#35299;密

        .net调用JScript脚本及JS url?#29992;?#35299;密,需要的朋友可以参?#23478;?#19979;
        2013-03-03
      8. 在asp.net(c#)下实现调用cmd的方法

        在asp.net(c#)下实现调用cmd的方法

        通常情况下我们会用到调用cmd.exe来实现一些命令,例如 ping ,等等
        2012-01-01
      9. 完美兼容ie和firefox的asp.net网站加入收藏和设置主页

        完美兼容ie和firefox的asp.net网站加入收藏和设置主页

        这篇文章主要介绍了完美兼容ie和firefox的asp.net网站加入收藏和设置主页,需要的朋友可以参考下
        2014-12-12
      10. 使用ASP.NET一般处理程序或WebService返回JSON的实现代码

        使用ASP.NET一般处理程序或WebService返回JSON的实现代码

        今天, 将为大家?#24471;?#22914;何在 ASP.NET 中使用一般处理程序或者 WebService 向 javascript 返回 JSON
        2011-10-10
      11. 最新评论

        常用在线小工具

        2018白小姐一肖中特马
        <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
        <big id="sjju3"></big>

      12. <blockquote id="sjju3"></blockquote>
        <blockquote id="sjju3"></blockquote>

          <td id="sjju3"></td>

          <big id="sjju3"></big>
            <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
          1. <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
            <big id="sjju3"></big>

          2. <blockquote id="sjju3"></blockquote>
            <blockquote id="sjju3"></blockquote>

              <td id="sjju3"></td>

              <big id="sjju3"></big>
                <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
              1. 腾讯分分彩有几个平台 彩票开奖查询结果查询 湖北快3跨度走势图 河南快三历史开奖结果 体坛大乐透走势图 青海快3开奖结果 快速时时彩是哪里开的 好运快3怎么玩 秒速时时彩是什么彩票 开乐彩开奖公告 排列5走势图带坐标 浙江快乐彩12选5走势图表 北京11选5历史开奖结果查询 qq斗地主开宝箱 福彩3d出号走势图彩宝