Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2222975
  • 博文数量: 556
  • 博客积分: 11457
  • 博客等级: 上将
  • 技术积分: 5973
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-24 22:33
文章分类

全部博文(556)

文章存档

2013年(22)

2012年(74)

2011年(460)

分类: 服务器与存储

2013-03-09 15:38:43

最近几天一直在做仿QQ,到了现在对协议的概念有了一点理解,感觉到协议才是实现客户机于服务器之间通信的本质,协议很巧妙的解决庞大网络中的诸多问题。

XMPP是点对点通信协议的一种格式,是以XML格式来包装消息的。
消息类型消息体
当然这里的消息体是一个不定量,他是有消息的类型决定的,通过对通信双通信规则(协议)的规定,也就实现了通过程序的解读来实现网络上的C/S模式的通信。

XMPP格式的协议是一个简单容易理解的通信方式,但是头尾的标签使得XMPP的一条消息传输到网络上所占据的无用字节数过多,降低了传输效率,还有一点就是以字符串标志消息结尾有可能导致消息的丢失,因为客户机发送的消息体中可能就包含有字符串,如果要降低这种出错的概率,就得增加程序的复杂程度。为此,提出了字节流协议的通信。事实上,IP层和TCP层中所遵循的也就是字节流协议。
字节流协议定义的规则例如:
消息长度(int)+消息类型(byte)+消息体;
消息长度是一个int型的规定了整条消息的长度,从而解决了XMPP格式协议导致因为消息体中出现,字符串而丢失消息的问题;
消息类型是一个byte型的,就相当于XMPP中的消息类型,大大简化了通信消息的传输;
消息体是一个不定量;

小小经验:
在写网络通信的过程中,常常会遇到消息方向的迷茫,所以在写通信之前一定要划分好消息的方向,还有一点就是哪些是客户机本地处理的内容(就是本地程序中应该包含的内容),哪些是服务器应该发送来的消息,和客户机对服务器发来消息的如何处理,一定要在心中有个谱。

转自:http://dqldqldql110-sina-com.iteye.com/blog/967327
阅读(3893) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~