登录帐号与客服端电脑绑定的问题!200分请教,

atpains 2008-07-17 10:29:48
还有100分解决后补上

登录帐号与客服端电脑绑定.
小弟 是 使用 MAC地址,获取客户端电脑的MAC地址,与帐号绑定。
获取客户端电脑MAC地址的类如下:(参考别人的,嘿嘿)
在本地测试时,能正常使用。服务器电脑和客户端电脑在同一局域网内。
但是把网站发布在公网的服务器上时,在局域网电脑访问是就不能正确获取MAC地址,返回string.Empty。

是这类不行吗? 还是我的思路错误了,大家都怎么实现这功能的哦。先谢谢了!


using System;
using System.Runtime.InteropServices;


namespace Hnsj.Wholesale.BLL
{
public class GetClientMac
{
[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);

public GetClientMac()
{

}

/**/
/// <summary>
/// 获取客户端的MAC地址
/// </summary>
/// <param name="IP">客户端IP</param>
/// <returns>客户端的MAC地址</returns>
public string GetMac(string IP)
{
string mac_dest = "";
try
{

string strClientIP = IP;
Int32 ldest = inet_addr(strClientIP); //目的地的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")
{
return string.Empty;
}

while (mac_src.Length < 12)
{
mac_src = mac_src.Insert(0, "0");
}

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));
}
}
}
}
catch
{

}

return mac_dest;
}
}
}
...全文
170 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
beijingbeerman 2008-07-23
  • 打赏
  • 举报
回复
可以的到他的硬盘出厂号
atpains 2008-07-22
  • 打赏
  • 举报
回复
...............
bolome 2008-07-22
  • 打赏
  • 举报
回复
帮顶
deepinnet 2008-07-19
  • 打赏
  • 举报
回复
根据IP 就可以取得客户MAC感觉不太可能,为什么不搞个同一时刻只能同一用户登录呢?或者用IP地址段来限制
loverdotnet 2008-07-19
  • 打赏
  • 举报
回复
mark
bobui 2008-07-19
  • 打赏
  • 举报
回复
顶。我不是搞这块的,支持一下
atpains 2008-07-19
  • 打赏
  • 举报
回复
用户都是 ADSL ip 会变得撒。

机器名字。这个可以试试啊,嘿嘿。
jizhikuan 2008-07-19
  • 打赏
  • 举报
回复
我原先也做过,不过是用js弄的
tinkcn 2008-07-19
  • 打赏
  • 举报
回复
只能靠ip获得mac?
估计过几天我也要做这个
关注。。。。
紫气东来_999 2008-07-19
  • 打赏
  • 举报
回复
不能正确获取MAC地址
为啥不用IP地址+机器名字

怕做假?
atpains 2008-07-19
  • 打赏
  • 举报
回复
来个人咯!~~~~~
yuelailiu 2008-07-17
  • 打赏
  • 举报
回复
你需要登陆到路由器上去查看,tracert 只是看你路由走向,

1 <1 ms 1 ms <1 ms 192.168.1.1
2 * * * Request timed out.

这个说明你访问外网,通过192.168.1.1 就出去了。

atpains 2008-07-17
  • 打赏
  • 举报
回复
问题是,现在 路由的MAC地址 都 获取不了啊。为什么呢
JeffChung 2008-07-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 shadowjl 的回复:]
我觉得有的机都是共享一个ip上网的,获取的mac的会不会是路由的地址
[/Quote]
sxmonsy 2008-07-17
  • 打赏
  • 举报
回复
友情UP
atpains 2008-07-17
  • 打赏
  • 举报
回复
Tracing route to xxx.xxx.xxx.xxx over a maximum of 30 hops

1 <1 ms 1 ms <1 ms 192.168.1.1
2 * * * Request timed out.

问题是 我的路由的mac地址也没有返回哦。返回的是 string.Empty
yuelailiu 2008-07-17
  • 打赏
  • 举报
回复
你可以试着把你网卡的mac地址绑定到 路由器或则防火墙上,试试看。
yuelailiu 2008-07-17
  • 打赏
  • 举报
回复
1 TRACERT 跟踪下路由的走向,

2 对应的mac地址应该是楼上兄台说的,对应的可能是你的路由器或则是防火墙的mac地址。
shadowjl 2008-07-17
  • 打赏
  • 举报
回复
我觉得有的机都是共享一个ip上网的,获取的mac的会不会是路由的地址
atpains 2008-07-17
  • 打赏
  • 举报
回复
用Cookie, 被清除了,就没效果了啊
加载更多回复(2)

62,133

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧