首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

一个控制客户端数量的有关问题

2014-01-08 
一个控制客户端数量的问题?我做了一个两层架构的系统 客户端+sqlserver,有哪位大哥知道在不改成三层架构的

一个控制客户端数量的问题?
我做了一个两层架构的系统 客户端+sqlserver,有哪位大哥知道在不改成三层架构的情况下如何限制客户端的连接数量(主要是客户端上线后能知道),最好是有现成的控件实现。麻烦哪位大哥告知小弟,万分感谢
[解决办法]
之前的做法是在数据库中增加一个表,登录就增加一条记录,退出就减少一条记录。再辅助一些功能去维护。基本上可以保证控制数量。
[解决办法]
http://blog.csdn.net/bdmh/article/details/4506468
[解决办法]
客户端的连接数量?
一个客户端程序可能同时有多个数据库连接(有些是必要,有些可能是程序漏洞,用友的U8就很严重)
还是以登录用户算1个比较合理——它需要靠应用逻辑去控制、维护
[解决办法]
1楼说得不错,要有一个在线用户表,在登录的时候判断在线用户数量。

[解决办法]
我觉得也是用表保存比较好,最好是加一下密,不要一个用户一条记录,这样比较容易被识破
[解决办法]
用数据表来统计当前连接的客户端是一种方法,但是不是最好的方法,如果客户端被强行终止进程。哪就无法正在执行退出操作了。2楼的,直接利用SQL去查询SQL Server的客户端,可以见鉴下。
[解决办法]
#2楼的方式只是提供了一种查询当时链接数量的方法,但不一定能应用于楼主的要求,要看程序设计这个。
我也比较支持操作表法。用类似心跳包的方式来更新最后一次访问时间来确定是否在线。哪怕万一非法关闭,也可以设定的1分钟2分钟的自动认定断线。只查询1分钟以内有更新过的数据作为在线客户端即可。
[解决办法]
SQL有Session列表,这用个.
[解决办法]
如果不改变现有模式,用表比较合适!
[解决办法]

引用:
呵,各位大哥,如果用表的话如果用户非正常退出,例如死机、断电等这些因数没有办法去判断用户退出呀,各位大哥能否给个详细的例子呢?


心跳、看门狗机制
对每个连接,维护一个最近动作时间,太久没动作的,自动判为已经退出
[解决办法]
引用:
呵,各位大哥,如果用表的话如果用户非正常退出,例如死机、断电等这些因数没有办法去判断用户退出呀,各位大哥能否给个详细的例子呢?


客户端有多少个??我之前的公司,客户端只有几十个,所以比较好办。
建一个表,包括:账号,更新时间。如果一个账号可以登录多台电脑,那再加一列:电脑名。如果一台电脑可以登录一个账号多次,就再加一列:连接号,这一列是执行SQL语句,得到连接到SQL Server的连接号。
在程序中,每隔一分钟就更新一次这个表,如果表中没有当前用户,就增加一条记录;如果有,就更新列“更新时间”为当前时间。SQL语句:Update 表 set 更新时间=getdate()
在SQL Server中增加一个排程,每隔三分钟就删除这个表中,更新时间在五分钟以前的。
最后,在程序登录时,就通过这个表可以进行判断。如判断用户是否已经登录过,在那台电脑登录的;判断已经有多少个用户在里面。

上面提到的“一分钟”、“三分钟”、“五分钟”可以自定义。
[解决办法]
引用:
Quote: 引用:

呵,各位大哥,如果用表的话如果用户非正常退出,例如死机、断电等这些因数没有办法去判断用户退出呀,各位大哥能否给个详细的例子呢?


客户端有多少个??我之前的公司,客户端只有几十个,所以比较好办。
建一个表,包括:账号,更新时间。如果一个账号可以登录多台电脑,那再加一列:电脑名。如果一台电脑可以登录一个账号多次,就再加一列:连接号,这一列是执行SQL语句,得到连接到SQL Server的连接号。
在程序中,每隔一分钟就更新一次这个表,如果表中没有当前用户,就增加一条记录;如果有,就更新列“更新时间”为当前时间。SQL语句:Update 表 set 更新时间=getdate()
在SQL Server中增加一个排程,每隔三分钟就删除这个表中,更新时间在五分钟以前的。
最后,在程序登录时,就通过这个表可以进行判断。如判断用户是否已经登录过,在那台电脑登录的;判断已经有多少个用户在里面。

上面提到的“一分钟”、“三分钟”、“五分钟”可以自定义。


噢,那个SQL语句有错误,不用看。

热点排行