0

監視したいsnmp対応デバイスがあります。しかし、このデバイスはすべての get リクエストに対して Request-ID 0 で応答します。snmp4j ライブラリは、0 以外の Request-ID 値を持つ get 要求を送信するため、これらの受信パケットを破棄します。受信したパケットを破棄し、応答に「null」値を返します。

get リクエストを送信する前に snmp パケットで Request-ID を 0 に設定すると、応答の snmp パケットを処理できます。

この snmp4j ライブラリには、任意の snmp パケットの目的の Request-ID を設定する「setRequestID(Integer32 (value))」関数が含まれていますが、この関数は Request-ID 値を 0 に設定できません。値を 0 に設定すると、この関数は、この値をランダムな Request-ID 値に置き換えます。

誰かが解決策を持っている場合は、応答してください。ありがとうございました。

4

1 に答える 1

1

request-id フィールドは、応答がクライアントに戻ってきたときに応答を識別するために使用されます。そのため、照会しているデバイスが、提供された値ではなく request-id 値が 0 のすべての要求を返す場合、クライアント (snmp4j) は無効であるため、応答を正しく破棄しています。応答パケットの request-id は、元の要求の request-id と常に一致する必要があります。デバイスにバグのある SNMP スタックがあります。リクエストの request-id が常に 0 になるようにコードを変更すると、非標準エージェントとの互換性を有効にする機能が壊れることになるため、お勧めしません。

于 2013-09-23T20:12:40.840 に答える