# sdlan交互协议 sdlan协议的总体格式如下: ``` +-----------+------------+--------+----------+ | 2字节的长度 | 2字节消息id | 消息头 | 消息体 | +-----------+------------+--------+----------+ ``` ## 长度 2字节长度包含后面的所有字节的长度(不包括自身) ## 消息id 用于匹配请求和响应,占用2字节,目前可以都先填写0 ## 消息头 在sdlan中,有一个common头使用二进制协议,消息头主要包含了协议版本,消息来源id(从哪个节点发出的节点标识),消息ttl,以及一些协议的flag(flag标志以后可以扩充) 消息头二进制格式如下: ``` +---------+----+-----+------+-----+ | version | id | ttl | flag | pc | +---------+----+-----+------+-----+ ``` 其中,version占用一个字节,用于标识协议版本。id用于唯一标识某个客户端,为长度为32字节的uuid,之后的ttl占用一个字节,当ttl为0,则直接丢弃该数据包。后面的flag占用2字节,用于标识数据包属性,目前拥有的标识如下: * `from_sn`: `0x0020`,表示这个数据包是从服务端发送过来的。 * `socket`: `0x0040`,表示这个数据包里面包含了socket信息(待定,因为后面实际的数据包使用了json,这个标识应该没用了)。 最后的pc表示后面数据包的类型,目前数据包类型如下: * `0` —— `invalid pkt type`,表示无效的数据包类型 * `1` —— `register super`,表示客户端像服务端发送的注册请求 * ... TODO ## 消息体 消息提根据协议头中的pc不同,拥有不同的结构,结构体在json化之后,添加到消息体的位置。 ### RegisterSuper `register super`,表示客户端像服务端发送的注册请求,该请求每隔15-20秒发送一次