求一个解析嵌套TLV报文的方法

发布于 2022-08-24 09:08:29 字数 158 浏览 11 评论 0

报文大致格式如下

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑梦风尘 2022-08-31 09:08:29

在我们的应用中一般的方式(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的处理,只是提供一个思路希望有帮助!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文