用户登录时获取本机IP地址和MAC地址

E诺千金 2012-07-03 02:00:49
用户登录时获取本机IP地址和MAC地址,并且验证是否和sql数据库中的IP地址相同,相同登录。
protected string GetIP() //获取本地IP
{
IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddr = ipHost.AddressList[0];
return ipAddr.ToString();
}

请各位给个获取本机MAC地址的方法。
...全文
996 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
可以好吧 2014-04-24
  • 打赏
  • 举报
回复
public partial class UserManage_Login : System.Web.UI.Page { [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 string ip = string.Empty; private string mac = string.Empty; protected bool IpToMac() { if (Context.Request.ServerVariables["HTTP_VIA"] != null) { ip = Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // Return real client IP. } else// not using proxy or can't get the Client IP { ip = Context.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP. } Int32 ldest = inet_addr(ip); //目的地的ip Int64 macinfo = new Int64(); Int32 len = 6; for (int i = 0; i < 5; i++) { int respond = SendARP(ldest, 0, ref macinfo, ref len); if (respond == 0) { string szMac = macinfo.ToString("X12").ToUpper(); for (i = 0; i < 6; i++) { if (i == 5) { mac = mac.Insert(0, szMac.Substring(i * 2, 2)); } else { mac = "-" + mac.Insert(0, szMac.Substring(i * 2, 2)); } } return true; } } return false; } protected void Page_Load(object sender, EventArgs e) { IpToMac(); }
八叔 2012-11-07
  • 打赏
  • 举报
回复
引用 12 楼 whlcyp 的回复:
问题已解决,给大家推荐个地址 http://www.itbobo.com/asp-net-to-obtain-client-ip-and-mac-address.html
你自己看看你的这个获取到的是服务器的MAC啊,这样有屁用啊?你要获取的是登陆用户的MAC!!!!!!!!!!!!!!
「已注销」 2012-07-08
  • 打赏
  • 举报
回复
bawfgfhv : 2012年04月07日08:33:11 地板 @回复 回复
试着用了一下,第一种基本上所有浏览器,都默认禁用了,第二种在局域网内可行,一到弄到外网再访问时,取到的MAC 就是一串儿00,第三种,就你说的一样,慢到不行,
IT伯伯 : 2012年04月07日20:12:36 @回复 回复
是的,三种方法都不好。第二种不仅仅是局域网,还需要在同一个号段中才能使用。不然取的值也全是0
E诺千金 2012-07-04
  • 打赏
  • 举报
回复
问题已解决,给大家推荐个地址
http://www.itbobo.com/asp-net-to-obtain-client-ip-and-mac-address.html
lj0514519 2012-07-03
  • 打赏
  • 举报
回复
/// <summary>
/// 获取网卡MAC地址
/// 注意:当计算机未联网或网卡被禁用时无法获取MAC地址
/// </summary>
/// <returns></returns>
public static string GetMacAddress()
{
string strMAC = "";
try
{
ManagementClass mcMAC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection mocMAC = mcMAC.GetInstances();

foreach (ManagementObject m in mocMAC)
{
if ((bool)m["IPEnabled"])
{
strMAC = m["MacAddress"].ToString().Trim();
break;
}
}
mocMAC.Dispose();
mcMAC.Dispose();
}
catch
{
strMAC = "";
}

return strMAC;
}
「已注销」 2012-07-03
  • 打赏
  • 举报
回复
IP = Request.UserHostAddress;
Mac是获取不到的,放弃吧骚年
烟波钓 2012-07-03
  • 打赏
  • 举报
回复
HttpRequest 下面有个UserHostAddress 属性 看能读到IP不
烟波钓 2012-07-03
  • 打赏
  • 举报
回复
string strClient = System.Web.HttpContext.Current.User.Identity.Name.Trim()
具体看 System.Web.HttpContext.Current.User下面的属性
E诺千金 2012-07-03
  • 打赏
  • 举报
回复
哦有没有合适的代码呀?那么刚开始的
protected string GetIP() //获取本地IP
{
IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddr = ipHost.AddressList[0];
return ipAddr.ToString();
}
是不是获取的是客户端的IP?
下面的 //获取MAC地址 得到的是?
public static string GetMacAddress()
{
ManagementClass adapters = new ManagementClass("Win32_NetworkAdapterConfiguration");
string MACAddress = "unknown";
foreach (ManagementObject adapter in adapters.GetInstances())
{
if ((bool)adapter["IPEnabled"] == true)
{
MACAddress = adapter.Properties["MACAddress"].Value.ToString();
break;
}
}
return MACAddress;
}
鸭梨山大帝 2012-07-03
  • 打赏
  • 举报
回复
ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");
這個WMI對象是你本机的,也就是服务器的,
这段代码是获取服务器的.

如果是ASP.NET程式,不使用ActiveX,仅能从request,Context获取客户端的IP,而且这个IP,在没有代理的情况下是客户端IP,如果客户端使用了Proxy连入的话,获取的是Proxy Server的IP

而使用ActiveX抓去客户端的Mac地址的方法,并不推荐,有安全性问题,而且不是Any Browser通用.
E诺千金 2012-07-03
  • 打赏
  • 举报
回复
我交弄混了,给个提示,前面的代码是不是获取到的是客户端的IP?
如果是客户端的IP,还有客户端的MAC地址咋得到?
下面的代码得到的是不是客户端的IP和MAC?
string stringMAC = "";
string stringIP = "";
ManagementClass MC = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection MOC = MC.GetInstances();

foreach (ManagementObject MO in MOC)
{
if ((bool)MO["IPEnabled"] == true)
{
stringMAC += MO["MACAddress"].ToString();
TextBox4.Text = MO["MACAddress"].ToString();//本地MAC
string[] IPAddresses = (string[])MO["IPAddress"];
if (IPAddresses.Length > 0)
stringIP = IPAddresses[0];
TextBox3.Text = stringIP.ToString();//本地IP
}
}
孟子E章 2012-07-03
  • 打赏
  • 举报
回复
不你得到客户端的MAC地址的。还发什么?
E诺千金 2012-07-03
  • 打赏
  • 举报
回复
是的,发现了。不知那位有合适的代码给小弟一个,急用呀。
孟子E章 2012-07-03
  • 打赏
  • 举报
回复
你这代码是在服务器端运行的,每个人的结果都一样的。

你能得到的是客户端ip,
诺维斯基 2012-07-03
  • 打赏
  • 举报
回复
不会。

62,041

社区成员

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

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

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

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