积极答复者
获取外网客户端MAC地址

问题
-
有一个网站挂在一个托管服务器上,我们这边每台机器浏览,如何获取自己的MAC地址?
/// <summary> /// 获取客户端Mac地址 /// </summary> public class GetMacAddress { [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); // <summary> /// 取得客户端MAC地址 /// </summary> public string GetNetCardMacAddress() { string userip = HttpContext.Current.Request.UserHostAddress; string strClientIP = HttpContext.Current.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"); 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)); } } } return mac_dest; } }
这个在局域网能获取到 放在外网就不能获取
I Belong To Jesus...- 已编辑 米兰卡卡 2011年3月11日 2:04 格式不对
答案
-
你好!
这段代码只有在局域网相同网段中才会有效,过了路由就不行了。目前 Web 获取客户端 MAC 是借助 ActiveX 这样又需要安装 ActiveX 和设置安全性,建议使用记录或验证IP的方式。
知识改变命运,奋斗成就人生!- 已标记为答案 彬慈Moderator 2011年3月11日 2:35
全部回复
-
这个和在那里没关系
浏览器是不会将客户机的mac地址返回给服务器端的,所以你在服务器上是无法通过访问网站的方式获得客户端的mac地址。
除非你在客户机上安装程序(C/S模式)。
family as water- 已建议为答案 彬慈Moderator 2011年3月11日 2:35
-
你好!
这段代码只有在局域网相同网段中才会有效,过了路由就不行了。目前 Web 获取客户端 MAC 是借助 ActiveX 这样又需要安装 ActiveX 和设置安全性,建议使用记录或验证IP的方式。
知识改变命运,奋斗成就人生!- 已标记为答案 彬慈Moderator 2011年3月11日 2:35