获得ip和mac地址

来源:互联网 发布:算法竞赛宝典淘宝 编辑:程序博客网 时间:2024/05/16 17:25
  1. using System.Runtime.InteropServices;  
  2.   
  3. [DllImport("Iphlpapi.dll")]  
  4. private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length);  
  5. [DllImport("Ws2_32.dll")]  
  6. private static extern Int32 inet_addr(string ip);  
  7. protected void Page_Load(object sender, EventArgs e)  
  8. {  
  9.       
  10.     // 在此处放置用户代码以初始化页面  
  11.     try  
  12.     {  
  13.         string userip = Request.UserHostAddress;  
  14.         string strClientIP = Request.UserHostAddress.ToString().Trim();  
  15.         Int32 ldest = inet_addr(strClientIP); //目的地的ip   
  16.         Int32 lhost = inet_addr("");   //本地服务器的ip   
  17.         Int64 macinfo = new Int64();  
  18.         Int32 len = 6;  
  19.         int res = SendARP(ldest, 0, ref macinfo, ref len);  
  20.         string mac_src = macinfo.ToString("X");  
  21.         if (mac_src == "0")  
  22.         {  
  23.             if (userip == "127.0.0.1")  
  24.                 Response.Write("正在访问Localhost!");  
  25.             else  
  26.                 Response.Write("欢迎来自IP为" + userip + "的朋友!" + "<br>");  
  27.             return;  
  28.         }  
  29.   
  30.         while (mac_src.Length < 12)  
  31.         {  
  32.             mac_src = mac_src.Insert(0, "0");  
  33.         }  
  34.   
  35.         string mac_dest = "";  
  36.   
  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.   
  52.         Response.Write("欢迎来自IP为" + userip + "<br>" + ",MAC地址为" + mac_dest + "的朋友!"  
  53.   
  54.          + "<br>");  
  55.     }  
  56.     catch (Exception err)  
  57.     {  
  58.         Response.Write(err.Message);  
  59.     }  
  60. }  
  61.   
  62.   
  63. private string GetClientIP()  
  64. {  
  65.     string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];  
  66.     if (null == result || result == String.Empty)  
  67.     {  
  68.         result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];  
  69.     } if (null == result || result == String.Empty)  
  70.     {  
  71.         result = HttpContext.Current.Request.UserHostAddress;  
  72.     }  
  73.     return result;  
  74. }  
0 0
原创粉丝点击