跳至主要內容

协议格式说明

hylexus大约 1 分钟示例Quick-Start编码解码

协议格式说明

请先读我

注意

这里的协议格式是 瞎编的 一种私有协议,仅仅用于演示如何基于注解进行协议编解码。

  • 本示例将演示 3 种风格的注解使用示例:
    • Rust 命名风格的注解
    • JT/T 808 协议 命名风格的注解
    • 最底层的 @XtreamField 风格注解(实际上前两种注解都是 @XtreamField 的别名)
  • 同时也会分为 扁平化内嵌 两种方式的注解使用示例:也就是 3 * 2 = 6 个 基于注解的实体类示例

协议格式

协议格式分为两大块:

  • 消息头
  • 消息体
header # 消息头
  magicNumber:      固定为 0x80901234
  majorVersion:     主版本号 无符号数 1字节
  minorVersion:     次版本号 无符号数 1字节
  msgType:          消息类型 无符号数 2字节
  msgBodyLength:    消息体长度 无符号数 2字节
body # 消息体
  if msgType == 0x0007:
    usernameLength:     下一个字段长度 无符号数 2字节
    userName:           String "UTF-8"
    passwordLength:     下一个字段长度 无符号数 2字节
    password:           String "GBK"
    birthDay:           "yyyyMMdd" "UTF-8" 8字节
    phoneNumber:        BCD_8421[6] 6字节
    age:                无符号数 2字节
    status:             "有"符号数 2字节 
  else if msgType == 0x0002:
    ....
  else if msgType == ...:
    ...
  else:
    ...

编解码