最近几天一直在做仿QQ,到了现在对协议的概念有了一点理解,感觉到协议才是实现客户机于服务器之间通信的本质,协议很巧妙的解决庞大网络中的诸多问题。
XMPP是点对点通信协议的一种格式,是以XML格式来包装消息的。
消息类型消息体
当然这里的消息体是一个不定量,他是有消息的类型决定的,通过对通信双通信规则(协议)的规定,也就实现了通过程序的解读来实现网络上的C/S模式的通信。
XMPP格式的协议是一个简单容易理解的通信方式,但是头尾的标签使得XMPP的一条消息传输到网络上所占据的无用字节数过多,降低了传输效率,还有一点就是以字符串标志消息结尾有可能导致消息的丢失,因为客户机发送的消息体中可能就包含有字符串,如果要降低这种出错的概率,就得增加程序的复杂程度。为此,提出了字节流协议的通信。事实上,IP层和TCP层中所遵循的也就是字节流协议。
字节流协议定义的规则例如:
消息长度(int)+消息类型(byte)+消息体;
消息长度是一个int型的规定了整条消息的长度,从而解决了XMPP格式协议导致因为消息体中出现,字符串而丢失消息的问题;
消息类型是一个byte型的,就相当于XMPP中的
消息类型,大大简化了通信消息的传输;
消息体是一个不定量;
小小经验:
在写网络通信的过程中,常常会遇到消息方向的迷茫,所以在写通信之前一定要划分好消息的方向,还有一点就是哪些是客户机本地处理的内容(就是本地程序中应该包含的内容),哪些是服务器应该发送来的消息,和客户机对服务器发来消息的如何处理,一定要在心中有个谱。
转自:
http://dqldqldql110-sina-com.iteye.com/blog/967327
阅读(293) | 评论(0) | 转发(0) |