日期:2014-05-19  浏览次数:20696 次

如何用JAVA实现类似QQ一个账号不能异地同时在线的功能?
如题,用户要求有这样的功能

效果就像我们的QQ本来在A机器上在线,当用B机器登录该QQ的时候,A机器上的这个QQ就自动下线。

请问该怎么实现。。。


没多少分了,大家就指点一下吧。。。

------解决方案--------------------
首先你的做的QQ应该也有一个标识状态的字段表示离线和在线状态,如果A地此帐号已经在线你就把这个帐号状态改成离线 然后就允许B的登录请求。
有两种方法记录此状态信息,一个是直接操作数据库,另一个就是封装到MAP再放进APPLICATION里。

个人思路 ,应该还有更好的及时判断吧。期待!!!!!!
------解决方案--------------------
不错
------解决方案--------------------
探讨
首先你的做的QQ应该也有一个标识状态的字段表示离线和在线状态,如果A地此帐号已经在线你就把这个帐号状态改成离线  然后就允许B的登录请求。
有两种方法记录此状态信息,一个是直接操作数据库,另一个就是封装到MAP再放进APPLICATION里。

个人思路  ,应该还有更好的及时判断吧。期待!!!!!!

------解决方案--------------------
每个QQ连接应该是一个Session,把这个Session和其QQ号保存在Server动态内存里,例如用一个HashMap。
每次新QQ登录的时候都去查一下这个Map,如果有重复的QQ号,就断掉该Session。
------解决方案--------------------
应该用一个列表把用户登录成功这个状态保存下来。然后有用户登录时遍历在线列表,如果该用户已经登录,那么就把该用户设置成离线状态,然后这个用户在登录。应该可以了 。
------解决方案--------------------
各位所说的方法基本上可以实现楼主的需求,但是我有个疑问:如果由于异常退出程序后,会不会出无法再次登录呢?
------解决方案--------------------
APPLICATION 存储过程 改数据库
------解决方案--------------------
思路大体都能够想得到解决方法,关键是通过何种方式实现~·
看看下面的这个帖子,希望对你有些帮助
http://topic.csdn.net/u/20080607/13/3ae03e2b-cb13-4143-a549-a8d8739fd1d7.html
------解决方案--------------------
Acegi可以实现,可以参考下:http://zhanjia.javaeye.com/category/43399?show_full=true
------解决方案--------------------
顶这个~

探讨
每个QQ连接应该是一个Session,把这个Session和其QQ号保存在Server动态内存里,例如用一个HashMap。
每次新QQ登录的时候都去查一下这个Map,如果有重复的QQ号,就断掉该Session。

------解决方案--------------------
顶!!!!!!!