从指定IP地址的设备获取MAC(物理)地址
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从指定IP地址的设备获取MAC(物理)地址相关的知识,希望对你有一定的参考价值。
This is about the simplest way I've found. See [this](http://stackoverflow.com/questions/1092463/getting-the-mac-address-of-the-remote-host) and [this](http://stackoverflow.com/questions/1092379/want-to-get-mac-address-of-remote-pc/1092392#1092392) at StackOverflow for more info.
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; SendARP(BitConverter.ToInt32(ipAddress.GetAddressBytes(), 0), 0, macBytes, ref length); } } [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); } }
以上是关于从指定IP地址的设备获取MAC(物理)地址的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 上以编程方式从 Mac 地址获取 IP 地址?