我有一个C#应用程序。在例程中,我有代码来使用SendARP获取MAC地址。
它适用于Windows 7,但不适用于Windows XP。我只是返回一个空字符串。
这是我的代码:
System.Runtime.InteropServices.DllImport("iphlpapi.dll", ExactSpelling = true)]
static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref int PhyAddrLen);
public static PhysicalAddress GetMacAddress(IPAddress ipAddress)
{
const int MacAddressLength = 6; //i know it is has a length of 6
int length = MacAddressLength;
var macBytes = new byte[MacAddressLength];
SendARP(BitConverter.ToInt32(ipAddress.GetAddressBytes(), 0), 0, macBytes, ref length);
return new PhysicalAddress(macBytes);
}
编辑:附加信息
这些方法都不适合我。有问题的设备是IP摄像头。它位于不同子网上的固定IP地址〜192.168.100.100
。 XP无法获取MAC地址,但在Windows 7上却可以。这些设备公开tvdevicedesc.xml
,以便获取有关这些设备的元信息,我在我的代码中使用“http://”+ _device.Connection +“/ tvdevicedesc.xml”并解析数据。这给了我mac地址。如果有人不确定我的意思,那么请提出问题,我会进一步解释。