如何在Asp.Net中获取客户端的MAC地址 [英] How to get client's MAC Address in Asp.Net
本文介绍了如何在Asp.Net中获取客户端的MAC地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想获取用户帐户身份验证的客户端MAC地址。我搜索了每一个地方,发现代码只获取服务器的MAC地址,这不是我的要求。我想访问访问该网站的设备的MAC地址。最后我找到了代码,但它没有获得我的本地/服务器系统MAC,它为所有设备获得相同的MAC。代码是:
I want to get Client's MAC address for User Account Authentication. I searched every where and found the code to get Server's MAC Address only which is not my requirement. I want to access the MAC Address of a device where the Website will be accessed. Finally I found the code but It is not getting my Local/Server System MAC, it is getting the same MAC for all devices. The code is:
[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);
protected void Page_Load(object sender, EventArgs e)
{
try
{
string userip = Request.UserHostAddress;
string strClientIP = Request.UserHostAddress.ToString().Trim();
Int32 ldest = inet_addr(strClientIP);
Int32 lhost = inet_addr("");
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("visited Localhost!");
else
Response.Write("the IP from" + 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("welcome" + userip + "<br>" + ",the mac address is" + mac_dest + "."
+ "<br>");
}
catch (Exception err)
{
Response.Write(err.Message);
}
}
现在请帮助我如何获得确切客户端的MAC地址。谢谢。
Now Please help me how to get the exactly client's MAC address. Thanks.
推荐答案
除非您的客户端与服务器位于同一物理子网中,否则无法获取MAC地址。如果客户端和服务器之间有路由器,您使用的任何代码都将获得最接近服务器的接口的MAC地址,而不是客户端。
获取客户端MAC地址没用,因为它并非每个客户端都是唯一的。您可以拥有多个具有相同MAC地址的客户端。
Unless your clients are on the same physical subnet as the server you can't get the MAC addresses. If there is a router between the client and the server any code you use will get the MAC address of the interface closest to the server, not the client.
Getting a client MAC address is useless as it's not unique to every single client. You CAN have more than one client with the same MAC address.
从请求中获取IP地址并使用它来查找mac地址。
http://snipplr.com/view/54687/ [ ^ ]
Get the IP address from the request and use this to find the mac address.
http://snipplr.com/view/54687/[^]
这篇关于如何在Asp.Net中获取客户端的MAC地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文