ASP .Net 获取网卡MAC物理地址

2022-01-14  乐帮网

netcore

以下示例代码提供网络接口(适配器)的 (MAC) 地址。示例代码是在Visaul Studio 2022中编写的,首先需要新建一个控制台应用项目。我选择的是通用类型的Windows、Linux和macOS上都能适用的.Net6。
Program.cs代码如下:

using System.Net.NetworkInformation;
using System.Text;

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)
{
    IPInterfaceProperties properties = adapter.GetIPProperties(); //  .GetIPInterfaceProperties();
    Console.WriteLine();
    Console.WriteLine(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();
}

StringBuilder sb = new StringBuilder();
foreach (NetworkInterface adapter in nics)
{
    if( adapter.NetworkInterfaceType== NetworkInterfaceType.Ethernet)
    {
        PhysicalAddress address = adapter.GetPhysicalAddress();
        byte[] bytes = address.GetAddressBytes();
        for (int i = 0; i < bytes.Length; i++)
        {
            sb.Append(bytes[i].ToString("X2"));
        }
    }
}
Console.WriteLine("========");
Console.WriteLine(sb.ToString());

Console.ReadLine();

运行效果如下图:

end

https://docs.microsoft.com/zh-cn/dotnet/api/system.net.networkinformation.physicaladdress?view=net-6.0

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力