求一个解析嵌套TLV报文的方法
报文大致格式如下
DA[6] SA[6] ACTION[2] PORT[4] {(MAINTYPE[1] SUBTYPE[2] LEN[4] VALUE[LEN])...........(MAINTYPE[1] SUBTYPE[2] LEN[4] VALUE[LEN])} 0x00
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在我们的应用中一般的方式(java、C)都是对于一个协议来说都一般都有一部分固定的协议字段,首先,根据固定的协议长度将固定的协议字段读取完。然后,再根据TLV的定义来读取TLV字段,我们一般的定义T(TAG)为2个字节short,L(Length)为2个字节short,那么你只需要根据前面读固定字段一样,先读取两个字节即读到T,再读取两个字节即读到了L,这时就要注意,根据读到的L的值再读取V(一般就是内容),如:读取L的最终结果为50个字节这么长那么读V的时候就直接读取50个字节,如果下面还有TLV字段那么就按前面的方式继续读取。当然,可以使用while的方式读取,对于多个。
还有就是要注意约定,如果TLV中V没有内容那么TL也最好要有值,这样保证读取的数据不会超过实际的字节数,这里说的只是我们应用中对于TLV的处理,只是提供一个思路希望有帮助!