转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
ASP.NET实现用户在线检测的类源码         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1951 更新时间:2009/4/23 10:45:56
//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";
        myDataColumn.ReadOnly  =  false;
        myDataColumn.Unique  =  false;
        _alluser.Columns.Add(myDataColumn);
      }
    }


    //功能说明:将当前用户加入在线列表
    //如果该用户的数据当前仍然在在线列表中,则暂时先不让该用户登陆,提示用户存在
    public  bool    AddUserToOnLine(User  user)
    {
#if  DEBUG
      (new  SohoProject.SohoDebug()).WriteToDoc("开始进入<将当前用户加入在线列表>....");
      (new  SohoProject.SohoDebug()).WriteToDoc("\r\n");
#endif


      //开始搜索是否已经存在该用户,如果存在则是改变数据,否则添加新的用户
      string  strExpr;
      strExpr  =  "sessionid=''''"  +  user.sessionid  +  "''''";  
      DataRow[]  curUser;
      //  Use  the  Select  method  to  find  all  rows  matching  the  filter.
#if  DEBUG
      (new  SohoProject.SohoDebug()).WriteToDoc("搜索字符串:"  +  strExpr);
      (new  SohoProject.SohoDebug()).WriteToDoc("\r\n");
#endif


      curUser  =  _alluser.Select(strExpr);

#if  DEBUG
      (new&nb

[1] [2] [3] [4]  下一页


[C语言系列]NET 中C#的switch语句的语法  [系统软件]托拽Explore中的文件到VB.net的窗口
[系统软件]Boost库在XP+Visual C++.net中的安装  [常用软件]新配色面板:Paint.Net3.0RC1官方下载
[常用软件]用内建的“Net Meeting”聊天  [VB.NET程序]Henry的VB.NET之旅(三)—共享成员
[VB.NET程序]Henry的VB.NET之旅(二)—构造与析构  [VB.NET程序]Henry的VB.NET之旅(一)—失踪的窗体
[VB.NET程序]在托盘上显示Balloon Tooltip(VB.NET)  [VB.NET程序]Henry手记-VB.NET中动态加载Treeview节点(二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台