`
邓启来
  • 浏览: 8233 次
  • 性别: Icon_minigender_1
  • 来自: 六安
文章分类
社区版块
存档分类
最新评论

XMPP协议与字节流协议

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

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

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

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

相关推荐

Global site tag (gtag.js) - Google Analytics