他们都是由服务器来控制的qq 有很多服务器集群 
你登陆一个qq就会在服务器里注册
再登录就会检查是否应经登录了msn 类似
都是有一个登录服务器的
如果自己做 也是同样的 如多个c 调用一个s
在s上做判断就好了

解决方案 »

  1.   

    这是一个很复杂的问题不能在客户机上实现要在服务器好像有两家公司实现了单点登陆(IBM 还有一家不记得了)
      

  2.   

    记得有个开源的东西实现了,去google下吧。
    还以为是单点登陆呢
      

  3.   

    服务器的数据库中存放用户在线状态的信息,并保留上线用户的IP
    当二次上线时,如果,发现IP不同
    给第一次的IP发送UDP数据(数据上写个头,用于判断此UDP的作用)客户端,提个线程出来做循环,间隔没必要很短,这样不会占用太多cpu
    当接收到UDP请求时,先分析头
    如果,是二次上线冲突的信息,那么直接终止程序,或是使其处于下线状态(如果你做了的话)
    最好还有个提示,ip为***.***.***.***的人上线,您被迫下线
      

  4.   

    10楼的纯属猜测,如果是判断ip的话那本地机器不是可以登录n个
      

  5.   

    具体服务器协议实现不同,像二楼说的,类似于MSN有个登录服务器,QQ也应该是在服务器端登录的时候控制的
    要是XMPP在协议中就有实现
      

  6.   

    恩,确实对于被迫下线这个功能,用ip来解决,只是个设想
    不过,如果相同ip的话,服务器再做判断应该也不是一件很难的事吧难点在于同一个局域网路由器下,可能就会出现些小bug了
    如果你有更好的方法可以提出
      

  7.   

    帐户控制很容易做到啊,同IP已经登陆的不允许再登,不同IP的就把原来登录的那个连接中止掉