亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在asp.net項目中獲取 MacAddress 地址

發布時間:2021-02-19 15:40:38 來源:億速云 閱讀:272 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關如何在asp.net項目中獲取 MacAddress 地址,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

因為在 dotnetcore 是沒有直接和硬件相關的,所以無法通過 WMI 的方法獲取當前設備的 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 的網卡可以通過先判斷是不是本地巡回網絡等,然后判斷有沒有網絡

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 然后自己輸出

下面的代碼是我抽出來的,可以直接使用

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

關于如何在asp.net項目中獲取 MacAddress 地址就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

游戏| 潮州市| 新津县| 宜黄县| 郯城县| 卢氏县| 龙泉市| 盖州市| 望谟县| 华安县| 兰州市| 子长县| 泰顺县| 河池市| 平利县| 邵阳县| 霍城县| 曲阜市| 甘谷县| 安丘市| 邻水| 阿合奇县| 山丹县| 青龙| 会昌县| 武城县| 阳新县| 丰顺县| 涿鹿县| 资源县| 北流市| 淄博市| 华亭县| 增城市| 微山县| 山西省| 马龙县| 阜宁县| 大埔区| 玉环县| 雷山县|