当前位置: 代码迷 >> ASP.NET >> 关于取IP?解决办法
  详细解决方案

关于取IP?解决办法

热度:6503   发布时间:2013-02-25 00:00:00.0
关于取IP?
我想统计一下点击数,一个IP只能算一个点击数,但如果同一个局域网共享上网,全部出来只有一个IP,那怎么办?

------解决方案--------------------------------------------------------
关注,学习
------解决方案--------------------------------------------------------
能获取主机名的啊,干嘛不用主机名?一个局域网里的主机名不可能一样啊,
如果怕多个局域网里的主机名重复,你获取的ip + 主机名就可以了。
------解决方案--------------------------------------------------------
取别的,CPU序列号硬盘ID,网卡什么的
C# code
 private void GetInfo()   {   string cpuInfo = "";//cpu序列号   ManagementClass cimobject = new ManagementClass("Win32_Processor");   ManagementObjectCollection moc = cimobject.GetInstances();   foreach(ManagementObject mo in moc)   {     cpuInfo = mo.Properties["ProcessorId"].Value.ToString();     Response.Write ("cpu序列号:"+cpuInfo.ToString ());   }   //获取硬盘ID   String HDid;   ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");   ManagementObjectCollection moc1 = cimobject1.GetInstances();   foreach(ManagementObject mo in moc1)   {     HDid = (string)mo.Properties["Model"].Value;     Response.Write ("硬盘序列号:"+HDid.ToString ());   }   //获取网卡硬件地址 9558821702001755616     ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");   ManagementObjectCollection moc2 = mc.GetInstances();   foreach(ManagementObject mo in moc2)   {     if((bool)mo["IPEnabled"] == true)     Response.Write("MAC address\t{0}"+mo["MacAddress"].ToString());     mo.Dispose();   }   }
------解决方案--------------------------------------------------------
附带

 主机名 = Server.MachineName; 

IP地址 = Request.UserHostAddress; 

系统时间 = DateTime.Now.ToString(); 

服务端口 = Request.ServerVariables["SERVER_PORT"]; 

操作系统 = Environment.OSVersion.ToString().Remove(0, 10); 

环境版本 = Request.ServerVariables["SERVER_SOFTWARE"];
------解决方案--------------------------------------------------------
使用mac地址他可以实现 公网IP一样mac地址是不同的
------解决方案--------------------------------------------------------
探讨
取别的,CPU序列号硬盘ID,网卡什么的

C# code
private void GetInfo()
{
string cpuInfo = "";//cpu序列号
ManagementClass cimobject = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = cimobject.GetInstances();
foreach(ManagementObject mo in moc)
{
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
Response.Write ("cpu序列号:"+cpu…

------解决方案--------------------------------------------------------
一帮人在这里胡说八道!!
什么MAC地址,硬盘序列号,主机名!你以为浏览器端是你自己的机器么?
还给出代码~~~你们也不看看server.MachineName还有ManagementClass这些都是在哪里运行的!

在b/s系统中只有两个方法可以唯一标识一台计算机,并且都不是绝对的,只能大致标识:
1.做一个activeX控件去获取对方机器的主机名,硬盘序列号,MAC地址一类的东西
但是人家浏览器一般都会拦截ActiveX控件,就算不拦截被人家杀毒软件认出是病毒我概不负责。
2.向浏览器端写Cookie,但是cookie会过期并且用户也可以清空Cookie,所以无法保证能够永远都标识出这台机器

B/s结构的系统就是这样的,不要以为跟C/s系统似的啥都能干!
  相关解决方案