检查MIB对象是否为DisplayString

时间:2010-01-28 11:42:16

标签: java snmp

我正在使用java Mibble库来处理MIB文件并为我的snmp代理创建MIB实现。并且有一点问题:

有一个DisplayString类型,它是OCTET_STRING的表示,但只能包含7位ASCII字符。还有类似AdminString的类型,它是OCTET_STRING的另一个表示,但可以包含所有ASCII字符。

所以我的问题是:如何区分DisplayString(所以我可以检查我的实现中大于126的字符)来自Admin String?我试图使用MibTypeTag [1],但显然我不知道如何使用它(任何提示?)并且它说“有可能使用相同或相似的原始ASN.1类型表示来区分类型(例如作为DisplayString和IpAddress)“

我的书面英语并不完美,所以这就是我想做的事情:

if (MibTypeTag == DisplayString) {
   check for chars greater than 126
}
else if (MibTypeTag == AdminString) {
   awesome! nothing to do!
}

提前致谢!

[1] http://www.mibble.org/doc/release/api/net/percederberg/mibble/MibType.html

1 个答案:

答案 0 :(得分:1)

好的,我解决了这个问题。

我决定不使用getTag() - 而是尝试了这个算法:

  1. 获取对象的类型(getType())并检查它是否是StringType的实例

  2. 如果是,我会从中获取参考符号:

    MibTypeSymbol mts =(StringType)myObj.getReferenceSymbol()

  3. 然后我将此MibTypeSymbol转换为String并与“DisplayString”进行比较

    mts.toString.equals( “DisplayString”);

  4. 并且 - 至于现在 - 它正在发挥作用。

    Mayby这对未来某人的帮助。

    但是有人可能有更好的想法吗?