1

我正在使用 net-snmp 开发 SNMP 代理,并为表中保存的数据开发 MIB。

我正在考虑使用基于大约 15 个十进制数字的字符串的表键。

将其实现为 OCTET STRING 索引是否合理?

即使我对每个八位字节编码 2 位数字,它也会有大约 8 个八位字节长。

使用 OCTET STRING 索引,每个八位字节将作为一个节点添加到 OID。

我知道我可以将其转换为整数,但十进制数字可能有前导零。

对此有何看法或建议?

提前致谢。

4

1 回答 1

3

您可以将零放入八进制字符串,所以是的,您可以这样做。OCTET STRINGS 可以包含二进制数据,并且被简单地编码为 OID 中的数字。Net-SNMP API 不仅接受指向 char * 的指针,还接受返回数据的长度。这特别是因为在其中编码空值的 OCTET STRINGS 是完全合法的。

在 OID 方面,如果您的字符串由字符 A、B 0、D 组成,则通常将其编码为:

废话.废话.4.65.66.0.67

其中 4 是字符串的长度。如果 OCTET STRING 被标记为 IMPLICIT,那么 4 将被忽略。

您将十进制数字编码到字符串中,因此您的值将更接近于 0x15、0x04、0x42 等。这些也很好(您正在构建二进制字符串)。

您是否应该这样做,或者您是否应该将整数本身放入字符串中,这是有争议的,但取决于您在做什么,以及环境的带宽限制等。

于 2013-07-15T13:07:47.850 回答