您好,匿名用户
随意问技术百科期待您的加入

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

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
用户头像 提问 2012年 12月1日 @ Amumu 上等兵 (340 威望)
分享到:

1个回答

0 投票

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

用户头像 回复 2012年 12月1日 @ Karthus 上等兵 (227 威望)
提一个问题:

相关问题

0 投票
1 回复 483 阅读
用户头像 提问 2012年 12月1日 @ Xerath 上等兵 (312 威望)
0 投票
1 回复 180 阅读
0 投票
0 回复 38 阅读
0 投票
1 回复 41 阅读
用户头像 提问 2012年 12月1日 @ Zeus 上等兵 (193 威望)
0 投票
1 回复 48 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...