如何在Asp.Net中获取客户端的MAC地址 [英] How to get client's MAC Address in Asp.Net

查看:421
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆