征询限制使用的在线用户数解决方案

$扫地僧$ 2007-09-29 09:52:45
一个C/S的软件 开发语言是VB

现在软件想添加一个功能
就是限制使用的在线用户数,
比如:该软件只允许有6个用户同时在线使用,
当第七个人要使用软件时 就不能使用该软件了!
想向各位大虾们 有什么好的解决方案没有!
...全文
587 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqhydz 2007-10-05
  • 打赏
  • 举报
回复
ip绑定啊,在loging时进行判断,不二法门
Tiger_Zhao 2007-10-04
  • 打赏
  • 举报
回复
按 4 楼的做法,用超时。不过不需要强制注销,只要将超时的认为已注销就可以了。
在已登陆信息中加上客户端 IP,在客户端程序每次进行数据库操作前进行如下检查:
1、当前用户的客户端 IP 是否与本机一致?
2、当前用户的最后更新时间是否未超时?
上面的任何条件不满足,客户端程序必须取消当前操作,返回到登陆画面进行重新登陆。
cs_oldhorse 2007-10-04
  • 打赏
  • 举报
回复
1个比较简单的方法是将登陆的用户存入数据库表,然后登陆时检查表纪录,>=6了就不让登了,退出系统时记得删除当前登陆的用户就可以始终保持不超过6个啦!
csuker 2007-10-02
  • 打赏
  • 举报
回复
如果非要实现,不如从S端对C端轮询,定义一个握手语言,比如当S端发出字串“A”时,C端返回C端的机器时间。如果规定时间内有返回,且时间正确,说明C端存在。
当然这样作会费很多事。不过在线数不多时是比较有用的。、
如果用户数多,也可以结合楼上其他办法,既只对最近一段时间内C端未返回的进行轮询。
vbman2003 2007-10-01
  • 打赏
  • 举报
回复
感觉可以用winsock
vbman2003 2007-10-01
  • 打赏
  • 举报
回复
如果后台是SQL,可以根据连接[sql中有一个系统表]来确定,完全没必要去再增加一个表.
-------------------------
不对吧?楼主的意思是限制同时使用他软件的人数,不是限制访问SQL服务器的人数吧?
tangweikai 2007-10-01
  • 打赏
  • 举报
回复
如果后台是SQL,可以根据连接[sql中有一个系统表]来确定,完全没必要去再增加一个表.
iamxiang 2007-09-30
  • 打赏
  • 举报
回复
一种是在程序中记录在线人数,进行限制!
还有一种是对服务器端机器进行设置,同时只允许6个用户连接,或者在数据库里面设置连线用户都行~
$扫地僧$ 2007-09-30
  • 打赏
  • 举报
回复
还有没有其它的建议阿!
tianhuo_soft 2007-09-29
  • 打赏
  • 举报
回复
数据库中设置一列 来记录
登陆一个加1
退出一个减1

其实这个有一个大问题就是 当用户不是正常退出的情况你怎么办
比如6个用户全是非法退出,怎么办??

这是大问题 限制用户是小问题

通过最近活动时间可以解决这个问题
比较麻烦 但不难 自己写代码吧~!
fj182 2007-09-29
  • 打赏
  • 举报
回复
呵呵,异曲同工
东方之珠 2007-09-29
  • 打赏
  • 举报
回复
参见:
http://topic.csdn.net/t/20030214/09/1426882.html
脆皮大雪糕 2007-09-29
  • 打赏
  • 举报
回复
用户表增加两个字段 最近一次心跳时间、登陆状态

用户登陆以后修改登陆状态为已经登录,然后每隔一定时间发送心跳信号,S端接收到心跳信号以后修改相应用户的心跳时间。正常退出的时候修改相应登陆状态
S端定时轮训用户表,对于最近一次心跳时间和当前时间相距超过一定阈值的时候将登陆状态修改为未登陆
fj182 2007-09-29
  • 打赏
  • 举报
回复
实际上很多系统都有这个问题,我没有发现什么好的解决方案,笨的倒是有一些,如:
1、引入超时机制,给用户表加一个时间戳字段,用于表示用户最后一次更新的时间,如果该时间已超出设定的超时值,可以认为该用户已经注销了。
2、增加监视程序,该程序随客户端启动,客户端登录后把登录的用户信息交给监视程序,一旦监视程序发现客户端不正常退出,则监视程序去实现注销用户。
3、如果前面两种都没能解决问题,还应该有一个手动注销用户的机制。
$扫地僧$ 2007-09-29
  • 打赏
  • 举报
回复
to fj182
你的方案如果正常登录和退出 当然是没问题
要是用户非正常的退出的话 标志位怎么改回来阿!!!
chenhui530 2007-09-29
  • 打赏
  • 举报
回复
通过网络验证~~
通过一个中间层来连接处理数据库和验证可以很好的实现
fj182 2007-09-29
  • 打赏
  • 举报
回复
登录的时候做个标记。
有用户登录时,先检查已经登录的用户数,如果超过限制,则不允许登录,否则修改登录标记。

例如在用户表里加一个字段IsLogin表示该用户是否登录
找出已经登录的用户数:select count(1) from users where IsLogin = 1
允许登录时:update users set IsLogin = 1 where LoginID = 'abc'
退出系统时:update users set IsLogin = 0 where LoginID = 'abc'

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧