How do I get the MAC address of my computer in a Mono application on Linux?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
Borrowed from MSDN, tested on VS2008 and mono 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();
}
}
}
outputs (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