程序实现;输入IP地址,也就是参数,获取该IP地址对应该设备的MAC地址?
给出原代码,必给分!

解决方案 »

  1.   

    using System.Management; string stringMAC = ""; 
    string stringIP = ""; 
    ManagementClass MC = new ManagementClass "Win32_NetworkAdapterConfiguration"); 
    ManagementObjectCollection MOC= MC.GetInstances(); foreach(ManagementObject MO in MOC) 

    if ((bool)MO["IPEnabled"] == true) 

    stringMAC += MO["MACAddress"].ToString(); 
    TextMAC.Text = stringMAC.ToString(); 
    string[] IPAddresses = (string[]) MO["IPAddress"]; 
    if(IPAddresses.Length > 0) 
    stringIP = IPAddresses[0]; 
    TextIP.Text = stringIP.ToString(); 


      

  2.   

    using   System.Runtime.InteropServices;   
      using   System.Text.RegularExpressions;   
      using   System.Text;   
        
        
      [DllImport("Iphlpapi.dll")]   
      private   static   unsafe   extern   int   SendARP(Int32   dest,Int32   host,ref   Int32   mac,ref   Int32   length);   
      [DllImport("Ws2_32.dll")]   
      private   static   extern   Int32   inet_addr(string   ip);   
        
        
        
        
        
      public   string   GetMACFromIP(string   A_strIP)   
      {   
              string   strRet   =   "Unknown";   
        
              string   strIPPattern   =   @"^\d+\.\d+\.\d+\.\d+$";   
        
              Regex   objRex   =new   Regex(strIPPattern);   
        
              if(objRex.IsMatch(A_strIP)   ==   true)   
              {   
      Int32   intDest   =   inet_addr(A_strIP);   
      Int32   []   arrMAC   =   new   Int32[2];   
      Int32   intLen   =   6;   
        
      int   intResult   =   SendARP(intDest,0,ref   arrMAC[0],ref   intLen);   
        
      if(intResult   ==   0)   
      {   
              Byte   []   arrbyte   =   new   Byte[8];   
              arrbyte[5]   =   (Byte)(arrMAC[1]   >>   8);   
              arrbyte[4]   =   (Byte)arrMAC[1];   
              arrbyte[3]   =   (Byte)(arrMAC[0]   >>   24);   
              arrbyte[2]   =   (Byte)(arrMAC[0]   >>   16);   
              arrbyte[1]   =   (Byte)(arrMAC[0]   >>   8);   
              arrbyte[0]   =   (Byte)arrMAC[0];   
        
              StringBuilder   strbMAC   =   new   StringBuilder();   
        
              for(int   intIndex   =   0   ;intIndex   <   6;intIndex   ++)   
              {   
      if(intIndex   >   0)   strbMAC.Append("-");   
      strbMAC.Append(arrbyte[intIndex].ToString("X2"));   
              }   
            strRet   =   strbMAC.ToString();   
      }   
              }   
        
            return   strRet;   
      } 
      

  3.   

    http://blog.sina.com.cn/s/blog_4463e1a001000c1t.html