ASP.NET实现用户在线检测的类源码

ASP.NET实现用户在线检测的类源码

//online.cs(用户在线检测) 
/*程序实现思路:

该用户有以下几个属性: 
name:用户名 
sessionID:用户ID,通过它唯一表示一个用户 
iswhere :附加信息,用户当前所在位置 
lasttime:用户登陆时间 
curtime:本次刷新时间

在客户端,使用一个IFRAME,装载一个刷新页面,每隔XX秒更新一下他的名字对应的curtime,就表示他仍然在

在服务器端,建立一个守护线程,每隔固定时间就运行一遍,然后判断当前所有用户列表中的时间间隔是否超出了规定的时间,如果超出,则将该用户从在线列表中删除,这样就可以做到检测用户是否在线了,而如果再单独 
写个用户离线后的处理,就可以解决好多人问到的:用户意外吊线后的处理。 
*/

#define DEBUG

using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Collections ; 
using System.Threading ; 
using System.Web; 
using System.Diagnostics;

namespace SohoProject 

//定义了一个结构 
public struct User 

public string name; 
public DateTime lasttime; 
public DateTime curtime; 
public string sessionid; 
public string ip; 
public string iswhere; 
}

public class OnLineUser 

private static DataTable _alluser;

//只读属性 
public DataTable alluser{ 
get{return _alluser;} 
}

public OnLineUser() 

if(_alluser==null) 

//define user list 
// Declare variables for DataColumn and DataRow objects. 
_alluser = new DataTable("onlineuser");

DataColumn myDataColumn;

// Create new DataColumn, set DataType, ColumnName and add to DataTable. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.String"); 
myDataColumn.ColumnName = "name"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "name"; 
myDataColumn.ReadOnly = false; 
myDataColumn.Unique = false; 
_alluser.Columns.Add(myDataColumn);


// Create sessionid column. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.String"); 
myDataColumn.ColumnName = "sessionid"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "sessionid"; 
myDataColumn.ReadOnly = false; 
myDataColumn.Unique = true; 
_alluser.Columns.Add(myDataColumn);

// Create ip column. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.String"); 
myDataColumn.ColumnName = "ip"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "ip"; 
myDataColumn.ReadOnly = false; 
myDataColumn.Unique = false; 
_alluser.Columns.Add(myDataColumn);

// Create iswhere column. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.String"); 
myDataColumn.ColumnName = "iswhere"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "iswhere"; 
myDataColumn.ReadOnly = false; 
myDataColumn.Unique = false; 
_alluser.Columns.Add(myDataColumn);

// Create iswhere column. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.DateTime"); 
myDataColumn.ColumnName = "lasttime"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "lasttime"; 
myDataColumn.ReadOnly = false; 
myDataColumn.Unique = false; 
_alluser.Columns.Add(myDataColumn);

// Create iswhere column. 
myDataColumn = new DataColumn(); 
myDataColumn.DataType = System.Type.GetType("System.DateTime"); 
myDataColumn.ColumnName = "curtime"; 
myDataColumn.AutoIncrement = false; 
myDataColumn.Caption = "curtime"; 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值