代码之家  ›  专栏  ›  技术社区  ›  matekm

检查MIB对象是否为DisplayString

  •  0
  • matekm  · 技术社区  · 16 年前

    我使用JavaMiBLL库来处理MIB文件,并为我的SNMP代理创建MIB实现。对此有点问题:

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

    所以我的问题是:如何区分displayString(这样我就可以检查实现中大于126的字符)和admin字符串?我试图使用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 回复  |  直到 16 年前
        1
  •  1
  •   matekm    16 年前

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

    我决定根本不使用gettag(),而是尝试了以下算法:

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

    2. 如果是,我从中得到参考符号:

      mibtypesymbol mts=(stringtype)myobj.getreferencesymbol()。

    3. 然后我将这个mibtypesymbol转换成string并与“displaystring”进行比较。

      mts.toString.equals(“displayString”);

    至于现在,它起作用了。

    也许这能帮助将来的某个人。

    但是也许有人有更好的主意?