asp.net core 获取 MacAddress 地址方法示例

2019-05-25 08:44:38刘景俊

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 地址方法