最近几天一直在做仿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>,大大简化了通信消息的传输;
消息体是一个不定量;
小小经验:
在写网络通信的过程中,常常会遇到消息方向的迷茫,所以在写通信之前一定要划分好消息的方向,还有一点就是哪些是客户机本地处理的内容(就是本地程序中应该包含的内容),哪些是服务器应该发送来的消息,和客户机对服务器发来消息的如何处理,一定要在心中有个谱。
分享到:
相关推荐
XMPP协议中文参考指南
一个很好的基于XMPP协议通信的源码例子,之前在网上下载了很多基于XMpp协议的例子都不好使,经自己改动后能正常通信,VS2010
xmpp协议 XMPP协议工具openfire_3_10_3。
XMPP协议的核心部分,中文名称可扩展消息出席协议
xmpp协议和xmpp扩展协议,chm格式
不可多的XMPP协议中文帮助文档,大家可要下来保存哦!
XMPP_协议介绍,手机客户端需要实现即时通信功能,在通信协议上采用开放的Jabber(XMPP)协议,整个XMPP协议最为核心也是最为复杂的部分是Subscription的运行机制,抓取了一下相关的通信协议报文,供开发时候参考。
xmpp协议介绍PPT,详细介绍了XMPP核心协议方方面面
XMPP体系架构 XMPP server:其内核是一个XMPP路由器,完成基本组件间的数据包交换和路由。 功能: 1.会话管理器:负责客户端会话认证,在线状态,用户联系表等 ...5.传输器:建立xmpp服务器与非xmpp服务器通信
xmpp协议可以用于聊天,内附中文文档,学习完就可以自己搭建服务器做android客户端的聊天程序了
类似QQ的xmpp协议聊天 基本功能都有了
一个比较全面面标准的XMPP协议文档,里面有具体的协议的说明及使用
xmpp协议介绍,不错的文档,值得学习
4.XML 流 5.TLS 的使用 6.SASL 的使用 7.资源绑定 8.服务器回拨 9.XML 节 10.服务器处理 XML 节的规则 11.XMPP 中的 XML 用法 12.核心的兼容性要求 13.国际化事项 14.安全性事项 15.IANA 事项 16.参考
通过绑定你的gmail邮箱 既可以通过xmpp协议即时传输数据
本文定义了可扩展消息和出席信息协议(XMPP)的核心功能,这个协议采用XML流实现在任意两个网络终端接近实时的交换结构化信息。XMPP提供一个通用的可扩展的框架来交换XML数据,它主要用来建立即时消息和出席信息应用...
agsXMPP\XMPP协议--即时通讯工具实现原理
基于xmpp协议的一个demo