当前位置:主页   - 电脑 - 网站开发 - ASP.Net
IM - 基础篇[2] - 基于UDP通讯的IM设计[开篇]
来源:网络   作者:   更新时间:2012-05-30
收藏此页】    【字号    】    【打印】    【关闭

  在上一篇文章中的末尾,我粘贴了来自我的框架部分截图,相信大家也很感兴趣,而且我也会毫不保密的继续为大家介绍精彩的IM技术讲解。

  这篇文章由我来讲解下基于IM的UDP通讯协议设计(开篇 - 1)

  大家都用过QQ吧?经常用吗?知道QQ的原理吗?会“拆”QQ吗?呵呵,作为一个IM研究人员,就要经常的对现有市场产品进行剖析。

  QQ,是基于UDP通讯协议的,这个毋庸置疑,我来剖析下QQ(以QQ2009为例):

  当大家打开QQ后,他会自动开启UDP端口若干(4000~6000)2个分段依次累加,当时我就在想,为什么他开那么多端口呢?有必要开那么多端口吗?

  呵呵 那么好,前言,现在开始本次讲解。

  现在的即时通讯软件中,大部分采用了UDP协议,原因有以下几个:

  1. UDP协议不用一直保存用户SOCKET,也就是断开式的,这样节省资源

  2. 为了服务器转发各种消息得到了便利

  3. 为了更好的减少异常的出现(比如用TCP/IP时的异常断开?)

  我在项目中也是采用的UDP通讯协议,大体的框架图可以看上一篇的,那么开端口,为什么像QQ那样开那么多端口呢?

  呵呵 这里我也给大家解答下,作为IM编写者,要时刻保持一种概念:一个QQ是可以支持不同协议簇的,而每个协议簇又包括了该协议簇的各种命令

  这就是为什么QQ会开有多个UDP端口,因为为了支持不同的协议!!

  我想看这篇文章的人,很多人在写C/S模式软件的时候是不是仅仅拥有1个协议呢?

  呵呵 还不理解?我打个比方,你的IM 注册,登陆用户,获取用户信息,聊天。。处理分组操作,处理好友操作是不是都是开1个UDP端口呢?

  如果不是,那是因为什么开那么多呢?

  然后大家用这一个UDP端口接收后,会有“命令树”(我们的俗称),说白了无非就是下面的形式:

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明