当前位置:  技术问答>java相关

关于QQ的贴字实在是多,95%是废话,是猜测,是臆断,

    来源: 互联网  发布时间:2015-05-01

    本文导语:  哪里有用java实现QQ的开发小组或讨论小组? QQ的client和server之间通讯(登陆、注册、查找好友等)是采用TCP还是UDP? | 做过一个练习作品,只实现了QQ的聊天。说下思路(方法不见得很好~) QQ...

哪里有用java实现QQ的开发小组或讨论小组?
QQ的client和server之间通讯(登陆、注册、查找好友等)是采用TCP还是UDP?

|
做过一个练习作品,只实现了QQ的聊天。说下思路(方法不见得很好~)

QQ分为客户端和服务器端两套不同的程序,而我们通常使用的当然是QQ的客户端了,客户端是独立的应用程序,它和服务器的交互采用的是TCP/IP,但它和服务器很少进行交互,只有在必要的时候,比如上线,查询好友,添加好友等,而平时我们和好友通讯用的是点对点,无连接和面向消息的UDP协议。这样做大大减轻了服务器的负担。服务器上的程序一直都在某个端口监听是否有消息从客户发来,为了保证即时处理客户消息,它一但监听到消息后,会把这个消息作为参数,传递给一个专门处理消息的Thread扩展类来处理,比如,如果这个消息是上线,就连接数据库将此用户的状态改为在线,如果是查询目前在线的好友,那么就查询后台数据库,并向客户返回结果。在你上线的时候,有两个参数显地十分重要,你的IP地址,和你的QQ的端口(一般PORT都是固定或相同的),而且这两个参数需要记录在数据库的用户信息表中一直跟随你,直到你下线或重新登陆改变了IP。因为用户和用户是UDP方式通讯,而这两个参数是必须需要的。设想我们刚打开自己的QQ吧,这样说比较自然一点:打开QQ,出来登陆提示框,填上我们的用户名和密码,服务器在监听到这个请求后会判断是否正确并返回,如果正确,服务器会检索添加你为好友的那些用户并向他们发送你登陆的消息。现在我们登陆了,首先我们应该得到自己的好友列表,大家还记得以前很早用QQ的时候吗,登陆花的时间比较长,有个对话窗口说的是正在获取好友资料,弄不好还


会登陆超时,其实就是这一步了。现在的QQ有了改变,只要你在某台机器上登陆过一次,它会在安装目录下为你建立一个用户目录,把你的好友资料以文件加密的形式记录在文件里,而是第一次在某机器上登陆,服务器也会快速地返回好友非常少的资料(如IP,在线状态),所以你会看到他们的头像全是默认的企鹅,用户名只有个号码,至于其他的详细资料,以多线程向服务器获取和更新。好了,反正现在你在线的好友都知道了他们的IP和PORT,这是跟随他们的其他资料一并传回的,你已经可以给他发送消息了(一个UDP数据包),


而服务器在告诉他们你登陆的时候,自然也把你的IP和PORT告诉了他们。


哎~~~累了,不好意思,写地没头没尾的

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • linux9.0下内存占用一直是95%以上怎么解决
  • 95%的中国网站需要重写CSS


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3