C# 在指定的IP地址中获得一个设备的MAC(物理)地址
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
using System.Net; using System.Net.NetworkInformation; /// <summary> /// Holds utilities for working with networks, Ethernet, etc. /// </summary> public static class NetworkUtils { [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); } } |
原创文章,转载请注明: 转载自搞代码
本文链接地址: C# 在指定的IP地址中获得一个设备的MAC(物理)地址

微信 赏一包辣条吧~

支付宝 赏一听可乐吧~
发表评论