获取本机MAC和获取客户端MAC

来源:互联网 发布:遇见淘宝店 编辑:程序博客网 时间:2024/06/01 09:19
  1.         /// <summary>
  2.         /// 获取客户端MAC
  3.         /// </summary>
  4.         /// <param name="dest"></param>
  5.         /// <param name="host"></param>
  6.         /// <param name="mac"></param>
  7.         /// <param name="length"></param>
  8.         /// <returns></returns>
  9.         [DllImport("Iphlpapi.dll")]
  10.         private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);
  11.         [DllImport("Ws2_32.dll")]
  12.         private static extern Int32 inet_addr(string ip);
  13.         public static string GetMAC()
  14.         {
  15.             // 在此处放置用户代码以初始化页面
  16.             try
  17.             {
  18.                 string strClientIP = HttpContext.Current.Request.UserHostAddress.ToString().Trim();
  19.                 Int32 ldest = inet_addr(strClientIP); //目的地的ip 
  20.                 Int32 lhost = inet_addr("");   //本地服务器的ip 
  21.                 Int64 macinfo = new Int64();
  22.                 Int32 len = 6;
  23.                 int res = SendARP(ldest, 0, ref macinfo, ref len);
  24.                 string mac_src = macinfo.ToString("X");//16进制
  25.                 if (mac_src == "0")
  26.                 {
  27.                     if (strClientIP == "127.0.0.1")
  28.                     {
  29.                         return GetlMAC();
  30.                     }
  31.                 }
  32.                 while (mac_src.Length < 12)
  33.                 {
  34.                     mac_src = mac_src.Insert(0, "0");
  35.                 }
  36.                 string mac_dest = "";
  37.                 for (int i = 0; i < 11; i++)
  38.                 {
  39.                     if (0 == (i % 2))
  40.                     {
  41.                         if (i == 10)
  42.                         {
  43.                             mac_dest = mac_dest.Insert(0, mac_src.Substring(i, 2));
  44.                         }
  45.                         else
  46.                         {
  47.                             mac_dest = "-" + mac_dest.Insert(0, mac_src.Substring(i, 2));
  48.                         }
  49.                     }
  50.                 }
  51.                 return mac_dest;
  52.             }
  53.             catch (Exception err)
  54.             {
  55.                 return err.Message;
  56.             }
  57.         }
  58.         /// <summary>
  59.         /// 获取本机MAC
  60.         /// </summary>
  61.         /// <returns></returns>
  62.         public static string GetlMAC()
  63.         {
  64.             string stringMAC = "";
  65.             ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");
  66.             ManagementObjectCollection MOC = MC.GetInstances();
  67.             foreach (ManagementObject MO in MOC)
  68.             {
  69.                 if ((bool)MO["IPEnabled"] == true)
  70.                 {
  71.                     stringMAC += MO["MACAddress"].ToString();
  72.                 }
  73.             }
  74.             stringMAC = stringMAC.ToString().Replace(":""-");
  75.             return stringMAC;
  76.         }