[DllImport("Iphlpapi.dll")]
private static unsafe extern int SendARP(Int32 dest,Int32 host,ref IntPtr mac,ref IntPtr length);
[DllImport("Ws2_32.dll")]
private static extern Int32 inet_addr(string ip);Int32 ldest= inet_addr("157.60.68.163");//目的地的ip
Int32 lhost= inet_addr("157.60.68.33");//本地的iptry
{
Byte[] macinfo=new Byte[6];
Int32 length=6;IntPtr mac=new IntPtr(macinfo[0]);
IntPtr len=new IntPtr(6);
int ii=SendARP(ldest,lhost, ref mac, ref len);Console.WriteLine("Mac Add:"+mac);
Console.WriteLine("length:"+len);
}
catch(Exception err)
{
Console.WriteLine(err);
}

解决方案 »

  1.   

    可以使用WMI来得到多个网卡的MAC地址. 代码参考如下:/// <summary> 
          /// 得到网卡物理地址 
          /// </summary> 
          /// <returns>网卡物理地址列表</returns> 
          public string[] GetMacAddress() 
          { 
             ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
             ManagementObjectCollection moc = mc.GetInstances(); 
             //****先得到网卡数目          
             int i = 0; 
             foreach(ManagementObject mo in moc) 
             {                         
                if((bool)mo["IPEnabled"] == true) 
                {                
                   i++;                
                }             
                mo.Dispose(); 
             } 
             //***赋值给数组 
             ManagementClass mc_2 = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
             ManagementObjectCollection moc_2 = mc_2.GetInstances(); 
             string []array = new string[i]; 
             int j = 0; 
             foreach(ManagementObject mo in moc_2) 
             {                         
                if((bool)mo["IPEnabled"] == true) 
                { 
                   string delcolon = mo["MacAddress"].ToString(); 
                   delcolon = delcolon.Replace(":","");                
                   array[j] = delcolon; 
                   j++;                
                }             
                mo.Dispose(); 
             } 
             return array; 
          } 
      

  2.   

    另 WMI 获取本地MAC
    1) Retrieve the MAC address:
    ManagementClass mc = new ManagementClass
    ("Win32_NetworkAdapterConfiguration");
    ManagementObjectCollection moc = mc.GetInstances();
    foreach(ManagementObject mo in moc)
    {
    if((bool)mo["IPEnabled"] == true)
    Console.WriteLine("MAC address\t{0}", mo
    ["MacAddress"].ToString());
    mo.Dispose();
    }