J2ME版移动飞信协议 (2)

本文介绍了J2me版飞信采用的基于HTTP协议的通信方式,详细解释了客户端与服务器间通过POST请求交互数据的过程及数据包格式。特别关注了包含多个子包的特殊响应包的处理方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

J2me版飞信(以下简称飞信)的通信协议,基于HTTP协议。它和服务器之间的通信,是通过POST这个动作来完成的,需要传送的数据,放在POST请求的data部分。

每个请求都是有客户端发起的,POST出数据之后,接受服务器的响应,然后关闭连接。对响应进行处理。

=== 数据包格式 ===

包含在HTTP请求(或者响应)DATA部分的数据格式:


[img]http://openfetion.iteye.com/topics/download/26e925c6-c408-33c0-ad02-4dbb396d648a[/img]

可以看到,每个包都分为Header和Payload两部分。
header是固定长度4个字节,其中,前三个字节(Length)表示整个数据包的程度,包括Header本身的长度,第4个字节(Code)表示请求的命令吗。表示长度的三个字节是按大端(big-endian)的格式(也就是网络字节序)来表示一个整数的。具体说就是,字节0表示长度的最高8位,字节1表示长度的中间8位,字节2表示长度的低8位。字节3表示请求码。

这个长度可以表示的很大,当然,暂时还用不上这么大。

Header后的有效数据(Payload)是变长的。该部分长度可以为0。一些简单的命令比如退出登录,只需要设置Code为对应的代码,Payload部分是不需要数据的。

服务器返回的数据格式和客户端发出的具有相同的格式。

=== 特殊的包 ===
在服务器响应中,有一个特殊的包,Code为 -1。 Code 为-1的包,实际上是有多个包组成的。需要把这些包全部分离出来,逐个处理它们。
[我不清楚是不是可以用Code为-1的包同时发送多个包到服务器,不过在飞信的代码里,没有看到这样的应用,只有从服务器收到的响应中有code为 -1的包]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值