日期:2014-05-17  浏览次数:20859 次

非正常退出
做了一个登陆窗体 同一个账号 只能同时登陆一台电脑,在数据库用了一个sfzx(0为离线,1为在线)的字段控制。但是,遇到电脑停电的情况下非正常退出的情况下,要怎么才能将sfzx字段改为0???

------解决方案--------------------
用心跳包的方式,比如客户端每隔1分钟向服务端发送心跳,服务器记录最后心跳包的时间。服务端判断最后心跳包的时间,如果最后心跳包的时间是2分钟或者3分钟之前的,就可以认为该客户端下线了
------解决方案--------------------
引用:
做了一个登陆窗体 同一个账号 只能同时登陆一台电脑,在数据库用了一个sfzx(0为离线,1为在线)的字段控制。但是,遇到电脑停电的情况下非正常退出的情况下,要怎么才能将sfzx字段改为0???

心跳检测
------解决方案--------------------
引用:
Quote: 引用:

一般建一个监视客户端活动的类。
请百度握手消息,代码也有现成的。

这样的话 服务器端的负荷很大吧 毕竟没开一个开户端都要开一个端口监听,,,我这使用的人大约是2000啊。。。


哪有什么2000个端口?处理2000用户,用一个端口就足以了。
------解决方案--------------------
存你的ip进去,可以定时往里存,或定时检测下
------解决方案--------------------
去问下 马化腾  QQ是怎么搞的···
不过我觉得 用数据库记录这种是非常不可行的···
其实可以这样: 在服务端也启动了一个监听服务···客户端登录成功后就和服务端一起保持心跳,如果心跳失败 那就用服务端的程序去更新数据库,说明 下线
------解决方案--------------------
规定时间刷新帐号在线和IP应该可以的,如果不能通就重置为0,账户需要程序登录。