| ASP.NET獲取客戶端IP及MAC地址很多時(shí)候非常必要的,像做投票、留言、評(píng)論 等系統(tǒng)的時(shí)候防止別人惡意操作,導(dǎo)致數(shù)據(jù)的虛假行。下面介紹獲取客戶端的IP和MAC地址的方法,僅供參考: 獲取客戶端IP: private string GetClientIP() { ?? string result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; ?? if (null == result || result == String.Empty) ?? { ??? result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; ?? } ?? if (null == result || result == String.Empty) ?? { ??? result = HttpContext.Current.Request.UserHostAddress; ?? } ?? return result; } 獲取MAC地址: [DllImport("Iphlpapi.dll")] private static extern int SendARP(Int32 dest,Int32 host,ref Int64 mac,ref Int32 length); [DllImport("Ws2_32.dll")] private static extern Int32 inet_addr(string ip); private void Page_Load(object sender, System.EventArgs e) { ?? // 在此處放置用戶代碼以初始化頁(yè)面 ?? try ?? { ??? string userip=Request.UserHostAddress; ??? string strClientIP = Request.UserHostAddress.ToString().Trim(); ??? Int32 ldest = inet_addr(strClientIP); //目的地的ip ??? Int32 lhost = inet_addr("");?? //本地服務(wù)器的ip ??? Int64 macinfo = new Int64(); ??? Int32 len = 6; ??? int res = SendARP(ldest,0, ref macinfo, ref len); ??? string mac_src=macinfo.ToString("X"); ??? if(mac_src == "0") ??? { ???? if(userip=="127.0.0.1") ????? Response.Write ("正在訪問Localhost!"); ???? else ????? Response.Write ("歡迎來自IP為" + userip + "的朋友!" + "<br>"); ???? return; ??? } ??? while(mac_src.Length<12) ??? { ???? mac_src = mac_src.Insert(0,"0"); ??? } ??? string mac_dest=""; ??? for(int i=0;i<11;i++) ??? { ???? if (0 == (i % 2)) ???? { ????? if ( i == 10 ) ????? { ?????? mac_dest = mac_dest.Insert(0,mac_src.Substring(i,2)); ????? } ????? else ????? { ?????? mac_dest ="-" + mac_dest.Insert(0,mac_src.Substring(i,2)); ????? } ???? } ??? } ??? Response.Write ("歡迎來自IP為"+userip+ "<br>" + ",MAC地址為"+mac_dest+"的朋友!" ???? +?? "<br>"); ?? } ?? catch(Exception err) ?? { ??? Response.Write(err.Message); ?? } } |