C# 在指定的IP地址中獲得一個設備的MAC(物理)地址

jopen 9年前發布 | 5K 次閱讀 C# IntelliJ IDEA

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>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!