Mina自定义协议

请求协议格式

req{

short tag;// 16位,0x0001

int length;//  32位,从下一字节开始至末尾的数据长度即数据区长度(后面会提到数据区)

short channelId;// 16位,频道id

byte  channelDes;// 8位,频道信息说明(类似说明信息的长度)

for(i=0;i<challelDes;i++){

byte_data;// 8位

}

}

扫描二维码关注公众号,回复: 730848 查看本文章

【说明】

tag:请求的唯一标识符,2字节

length:数据区长度,4字节

channelId:2字节

channelDes:频道说明信息的长度,1字节

for循环:存放频道说明信息的真实数据

前面2个绿色的部分称为报头,固定6字节

中间2个蓝色的部分称为基本数据区

最后红色部分称为真实数据区,所有String信息都放在这里

数据区=基本数据区+真实数据区

协议=报头+数据区

即:

协议:tag length 基本数据区 真实数据区

报头 数据区

对于基本数据类型,直接存放在基本数据区,对于String类型,在基本数据区描述它的长度和真实数据区的地址,然后存到真实数据区

解码必须获得的信息:

1、请求标识:根据不同的类型进行解析

2、数据区总长度:可判断是否接收数据成功

3、偏移地址:知道真实数据区的位置(偏移地址即tag+length+基本数据区的长度,接下一个字节肯定会走到真实数据区,目的就是定位真实数据区的开始下标)

 

 

 

响应协议格式

res{

short tag;// 16位,0x0002

int length;//从下一字节开始至末尾的数据长度

int channelAddress;

byte channelLen;

int count;

for(i=0;i<count;i++){

byte index;// 下标

int num;// 编号

int size;// 大小

int startTime;// 开始时间

int totalTime;// 总时间

byte status;// 状态

}

}

 

协议的格式根据需求可以很灵活的进行变动。以上只是举例。

for循环中可以存放一组对象数据。

 

本文作用主要用于学习mina方面的知识,为了加深理解和记忆特记。

本来是有图片的,很清晰直观,但上传图片需要图片链接,本地图片无法上传,希望各位高手可以给个解决办法。

图片以附件形式上传了。

本文内容整理自Mina2.0完全剖析,顺带上传PDF供大家学习。

猜你喜欢

转载自simple1024.iteye.com/blog/1763640