1、定义帮助类
public class Arp
{
public int ExtractMAC(string IP, ref string destMac)
{
StringBuilder MacRouteBuilder = new StringBuilder();
int flag = 0;
try
{
int ldest = inet_addr(IP);
long macinfo = new long();
int len = 6;
int ret = SendARP(ldest, 0, ref macinfo, ref len);
if (ret == 0)
{
string TmpMac = Convert.ToString(macinfo, 16).PadLeft(12, '0');
for (int i = 10; i >= 0; i = i - 2)
{
MacRouteBuilder.Append(TmpMac.Substring(i, 2).ToUpper());
if (i >= 2)
{
MacRouteBuilder.Append("-");
}
}
flag = 1;
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
if (flag == 1)
{
destMac = MacRouteBuilder.ToString();
return 0;
}
return -1;
}
[DllImport("ws2_32.dll")]
public static extern int inet_addr(string cp);
[DllImport("IPHLPAPI.dll")]
public static extern int SendARP(int DestIP, int ScrIP, ref long pMacAddr, ref int PhyAddrLen);
}
2、调用
private void Button_Click(object sender, RoutedEventArgs e)
{
Arp arp = new Arp();
string mac = "";
arp.ExtractMAC("192.168.XXX.XX",ref mac);
}