如何在Linux上的Mono应用程序中获取计算机的MAC地址?
答案 0 :(得分:16)
借用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