您的位置:首页 > 编程语言 > ASP

ASP.NET获取客户端IP及MAC地址

2008-12-18 09:20 836 查看
ASP.NET获取客户端IP及MAC地址很多时候非常必要的,像做投票、留言、评论 等系统的时候防止别人恶意操作,导致数据的虚假行。下面介绍获取客户端的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)

{

// 在此处放置用户代码以初始化页面

try

{

string userip=Request.UserHostAddress;

string strClientIP = Request.UserHostAddress.ToString().Trim();

Int32 ldest = inet_addr(strClientIP); //目的地的ip

Int32 lhost = inet_addr(""); //本地服务器的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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: