C# 统计在线人数和总访问人数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.SessionState;
using System.IO; namespace ZhengGong
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
Application.Lock(); Application["dateTime"] = DateTime.Now.ToShortDateString(); Application["ipList"] = new List<string>(); //默认总访问记录数为0
Application["count"] = 0;
//默认当前在线数为0
Application["online"] = 0;
//将当前人数写入文件中
WriteCountPerson(0); Application.UnLock();
} protected void Session_Start(object sender, EventArgs e)
{
//临时日期和系统记录的日期对比,若不相等表示不是同一天
string tempDate = DateTime.Now.ToShortDateString();
string appDate = Application["dateTime"].ToString();
if (!tempDate.Equals(appDate))
{
Application["dateTime"] = tempDate;
Application["ipList"] = null;
int countNums = ReadCountPerson();
WriteCountPerson(countNums + int.Parse(Application["count"].ToString()));
} //发起会话的客户端IP地址
string tempIp = Context.Request.UserHostAddress;
//设置一个会话的作用时间为一分钟,即一分钟内不做任何操作的话,该会话就会失效。
Session.Timeout = 1;
//用于存储客户端的IP地址集合,若没有则表示是新的一天并且实例化出集合对象
List<string> ipList = Application["ipList"] as List<string>;
if (ipList == null)
{
ipList = new List<string>(); //如果ipList集合为空那么实例化他
} //读取出文件中保存的总访问人数
int countNums_2 = ReadCountPerson();
if (!ipList.Contains(tempIp))
{
//在ip集合中添加客户端IP地址
ipList.Add(tempIp);
Application["ipList"] = ipList;
//总访问数在文件中保存的数据累加1
countNums_2 += 1;
WriteCountPerson(countNums_2); }
//当前在线人数累加1
Application["online"] = (int)Application["online"] + 1; Application["count"] = countNums_2; Application.UnLock();
} protected void Application_BeginRequest(object sender, EventArgs e)
{ } protected void Application_AuthenticateRequest(object sender, EventArgs e)
{ } protected void Application_Error(object sender, EventArgs e)
{ } protected void Session_End(object sender, EventArgs e)
{
Application.Lock(); Session.Abandon(); //当以一个会话结束后,注销该会话 int online = int.Parse(Application["online"].ToString());
if (online <= 0)
{
Application["online"] = 0;
}
else
{
Application["online"] = (int)Application["online"] - 1;
} Application.UnLock();
} protected void Application_End(object sender, EventArgs e)
{ } /// <summary>
/// 写入网页总访问人数
/// </summary>
/// <param name="nums"></param>
public void WriteCountPerson(int nums)
{
string filePath = System.Web.HttpRuntime.AppDomainAppPath + "ConfigFiles\\countPersonNums.ini";
if (!File.Exists(filePath))
{
File.Create(filePath);
}
StreamWriter sw = new StreamWriter(filePath, false);
sw.WriteLine("访问总数为:" + nums);
sw.Flush();
sw.Close();
} /// <summary>
/// 读取网页总访问人数
/// </summary>
public int ReadCountPerson()
{
try
{
int nums = 0;
string filePath = System.Web.HttpRuntime.AppDomainAppPath + "ConfigFiles\\countPersonNums.ini";
if (!File.Exists(filePath))
{
return 0;
}
FileStream fs = new FileStream(filePath, FileMode.Open);
StreamReader streamReader = new StreamReader(fs);
string strLine = streamReader.ReadLine();
string[] split = strLine.Split(':');
if (split.Length <= 1)
{
return 0;
}
int.TryParse(split[1], out nums);
fs.Flush();
fs.Close();
streamReader.Close();
streamReader.Dispose();
return nums;
}
catch (Exception ex)
{
throw ex;
}
}
}
}
直接贴出代码,使用c# 的Global.asax 全局配置文件来做处理,效果测试过大致可以但是有个小bug就是 关闭浏览器再打开浏览器那个sestion_start事件会再次执行,那么当前在线人数会有误,有待解决。
C# 统计在线人数和总访问人数的更多相关文章
- 使用Application对象简单完成网站总访问人数的统计
Global.asax文件: using System.IO; protected void Application_Start(object sender, EventArgs e) { Fil ...
- PHP统计当前网站的访问人数,访问信息,被多少次访问。
<?php header('Content-type:text/html;charset=utf-8'); //统计流量(人数,访问次数,用户IP) //假设用户访问,得到IP地址 $remo ...
- ASP.net中网站访问量统计方法代码(在线人数,本月访问,本日访问,访问流量,累计访问)
一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间 (IP_DateTime),些表的信 ...
- JS在在线人数和访问人数
var date=new Date();var expiresDays=10;var count=1500+parseInt(date.getTime()/1000)-parseInt(date.ge ...
- Asp.Net 网站访问人数及在线人数
利用Application对象和Session对象可以统计历史访问人数和当前在线人数. 在会话开始和结束时,一定要进行加锁和解锁操作.由于多个用户可以共享Application对象,因此加锁是必要的, ...
- JSP使用网站访问人数统计功能,方法与技巧
实现网站访问人数统计功能的步骤: 创建静态登录页面,并指定表单提交由登录处理页面进行处理. 创建登录处理页面获得登录信息,查询数据库,判断该用户是否注册,如果该用户已注册,把已登录用户的信息保存在一个 ...
- servlet过滤器--使用过滤器统计网站访问人数的计数(注解形式)
文章目录 1.什么是过滤器? 2.过滤器核心对象 3.过滤器创建和配置 4.举例子 1.什么是过滤器? 主要用于对客户端的请求进行过滤处理,再将经过过滤后的请求转交给下一个资源. 2.过滤器核心对象 ...
- 利用php比较精确的统计在线人数的办法
利用php比较精确的统计在线人数的办法,注意这里所说的精确是指个数,如果需要精确在时间上,则需要根据实际情况调整代码中的有效时间.(自己没有写,从别人那拿过来的,先放着然后再研究)<?php// ...
- (实用篇)php精确的统计在线人数的方法
这是一个非常精确的,通过php实现统计在线人数的方法,想知道怎么实现的请耐心阅读. <?php $filename='online.txt';//数据文件 $cookiename='VGOTCN ...
随机推荐
- 在.net中调用Delphi dll的Pchar转换
Pchar是非托管代码,要在.net中调用Delphi dll中的功能,请使用MarshalAs属性告知.net调用PInvoke去转换.net中标准的string类型.如果Delphi dll是De ...
- cmd导入导出
2:用cmd进入命令行输入:tnsping cmstar就是测试172.18.13.200是否连接成功3:导入与导出,如下: 数据导出: 1 将数据库TEST完全导出,用户名system 密码mana ...
- Java 使用GDAL 读写 shapefile
读取shp文件,并把它转化为json import org.gdal.ogr.*; import org.gdal.ogr.Driver; import org.gdal.gdal.*; public ...
- 安装完magento后,其他电脑无法访问magento,URL自动跳转到http://localhost/magento
问题:在电脑A上安装完了magento 1.7.0.2 然后, 在电脑A上用 http://localhost/magento 访问网站,没有问题. 但在电脑B 上用 http://192.168.4 ...
- APP开发:一个APP开发需要哪些技术人员?
亿合科技小编了解到:国民老公王思聪曾经在一个访谈中谈到过,如果他是一个普通人,他会选择移动互联网去创业,因为做个网站或者App开发门槛较低,做大做强的机会也比较多.小编觉得创业就是投资,重 ...
- PAT树_层序遍历叶节点、中序建树后序输出、AVL树的根、二叉树路径存在性判定、奇妙的完全二叉搜索树、最小堆路径、文件路由
03-树1. List Leaves (25) Given a tree, you are supposed to list all the leaves in the order of top do ...
- Hihocoder 1079 离散化
离散化这里有很多种方式 利用结构体记录最初的索引在按位置排序再记录排名即为离散的位置再按索引排回来 或者用数组记录排序后直接对原位置二分直接去找离散应在的位置 或者对数组排序后直接map 3 20 1 ...
- 搭建S3C6410开发板的测试环境
因为ARM架构的开发板可基于X86架构的PC在CPU指令以及二进制上都有所不同,而且如果linux驱动需要访问硬件,这些硬件很难在PC上模拟,所以就需要我们在带有这些硬件的开发板上进行调试和测试. ...
- Hdu 1009 FatMouse' Trade
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- aliyun阿里云Maven仓库地址
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexu ...