C# 在指定的IP地址中獲得一個設備的MAC(物理)地址
using System.Net; using System.Net.NetworkInformation;/// <summary> /// Holds utilities for working with networks, Ethernet, etc. /// </summary> public static class NetworkUtils { //
http://www.codeproject.com/KB/IP/host_info_within_network.aspx [System.Runtime.InteropServices.DllImport("iphlpapi.dll",
ExactSpelling = true)] static extern int SendARP(int DestIP, int SrcIP, byte[]
pMacAddr, ref int PhyAddrLen);/// <summary> /// Gets the MAC address (<see cref="PhysicalAddress"/>)
associated with the specified IP. /// </summary> /// <param name="ipAddress">The remote IP address.</param> /// <returns>The remote machine's MAC address.</returns> public static PhysicalAddress GetMacAddress(IPAddress
ipAddress) { const int MacAddressLength = 6; int length = MacAddressLength; var macBytes = new byte[MacAddressLength]; SendARP(BitConverter.ToInt32(ipAddress.GetAddressBytes(),
0), 0, macBytes, ref length); return new PhysicalAddress(macBytes); } }[TestClass()] public class NetworkUtilsTests { [TestMethod()] public void GetMacAddress_BroadcastIP_NonzeroMac() { IPAddress ipAddress = IPAddress.Broadcast;
PhysicalAddress actual = NetworkUtils.GetMacAddress
(ipAddress); Console.WriteLine(actual.ToString());
Assert.AreNotEqual(PhysicalAddress.None, actual); }
}</pre>