如何在Linux上的Mono应用程序中获取计算机的MAC地址?
借用MSDN,在VS2008和单声道2.4.2.3(Debian 2.4.2.3 + dfsg-2)上测试:
using System; using System.Net.NetworkInformation; namespace ConsoleApplication2 { class Program { public static void ShowNetworkInterfaces() { 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.Description); Console.WriteLine(String.Empty.PadLeft(adapter.Description.Length, '=')); Console.WriteLine(" Interface type .......................... : {0}", adapter.Netwo$ 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(); } } static void Main(string[] args) { ShowNetworkInterfaces(); } } }
输出(linux):
Interface information for hera.(none) Number of interfaces .................... : 2 lo == Interface type .......................... : Loopback Physical address ........................ : eth0 ==== Interface type .......................... : Ethernet Physical address ........................ : 00-26-xx-xx-xx-xx