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

全部博文(556)

文章存档

2013年(22)

2012年(74)

2011年(460)

分类: IT业界

2013-03-07 19:43:40

1.通信的流程
    首先要能连接上服务器,连接上之后,双方必须遵守严格约定的消息发送顺序,否则就无法保持双方的交流。
2.通信消息格式的定义
   客户端在连接通道上向服务器发送消息时,服务器必须知道凭什么来界定收到的数据算是“一条”消息?
   打电话时,我们听到的一句话是根据中文的语法基础决定的。当两台机器通信时,这个规定必须定义明确,且双方遵守。多人聊天室开发过程中,大家容易发这样的错:
如果客户端发送的消息不加上:"\r\n” 做一条消息的标识符,服务器就无法读到这条消息。
   根据这个思路,你也可以和服务器约定:将用户名和密码用一条消息发送,它们之间用#号隔开。这个约定就是一种消息格式的定义。
   所以,通信协议可以理解为:通信双方的通信流程和数据格式的规则,要参与通信的双方都只有按照这个规则发送,数据才可以正常通信。

XMPP协议与字节流协议


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

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

参考文献:http://dqldqldql110-sina-com.iteye.com/blog/967327

阅读(2149) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~