当前位置:  技术问答>linux和unix

重分寻求:做类似于QQ的服务器端程序之实现流程?

    来源: 互联网  发布时间:2014-11-26

    本文导语:  重分寻求:做类似于QQ的服务器端程序之实现流程?   计划做个QQ的服务器端程序,对UNIX下的信号、进程间通信、socket已熟悉,但还摸不着实现方法,希能寻求具体的实现流程。 | QQ分为客户...

重分寻求:做类似于QQ的服务器端程序之实现流程?
  计划做个QQ的服务器端程序,对UNIX下的信号、进程间通信、socket已熟悉,但还摸不着实现方法,希能寻求具体的实现流程。

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


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


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

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












  • 相关文章推荐
  • 寻求linux开发高手,本人想用linux开发一个视频服务器。本人已将编码和解码部分写完,但对LINUX不熟。特有意寻求合作伙伴。
  • 高分寻求jsp代码(网上调查系统,新闻发布系统)就这点分了
  • 寻求java加密算法及实例
  • 高分寻求JSP/Servlet写的聊天室源代码?请各位高手帮忙!
  • 德国母公司寻求国内软件开发合作伙伴
  • 寻求《beginning linux programming》中文版电子书
  • 寻求RTOS解决方案
  • 可耻的寻求大家帮助
  • 寻求精通Linux内核的高手共同开发程序
  • 给你1000分也行,再现等待!!寻求:直接基与xlib开发的控件:对话框、文本框、按钮、tab、。。。。
  • 寻求:/proc/sys/net/ipv4 参数详解
  • 高分寻求Jcreator 2.0的注册码。谢谢!急用! 50分。
  • 寻求:unix/linux 基础实用资料
  • 1000分寻求解答,今天刚为win xp打了sp1,结果系统装完后要我再次激活
  • 寻求jbuilder4.0的注册码
  • 寻求乱序算法。
  • 寻求图象下载的applet程序
  • 寻求jbuilder的破解,~O^
  • --========寻求帮助=========--
  • 寻求jsp高手


  • 站内导航:


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

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

    浙ICP备11055608号-3