0

SNMP バージョン 1 パケット形式を使用して、指定されたデバイス OID からデータをフェッチできる SNMP ユーティリティを C# で開発しています。

ほぼ完成しましたが、解決できない問題です。

単一の「Get」パケットを送信して 1 つの変数を正常に照会していますが、単一のパケットを送信して複数の変数を照会する必要があります。

私はこの方法でそれを試しました:

//variable bindings
p[bytepos++] = 0x30; //variable bindings sequence
p[bytepos++] = Convert.ToByte(6 + oid_len - 1 + 6 + oid_len2 - 1); // Size of variable binding
p[bytepos++] = 0x30; //first variable bindings sequence
p[bytepos++] = Convert.ToByte(4 + oid_len - 1); // size
p[bytepos++] = 0x06; //Object type
p[bytepos++] = Convert.ToByte(oid_len - 1 ); //length

//Start of MIB
p[bytepos++] = 0x2b;

for (i = 2; i < oid_len; i++)
    p[bytepos++] = Convert.ToByte(oid[i]);

p[bytepos++] = 0x05; //Null object value
p[bytepos++] = 0x00; //Null

//start of second variable bindings sequence
p[bytepos++] = 0x30; //Second variable bindings sequence
p[bytepos++] = Convert.ToByte(4 + oid_len2 - 1); // size
p[bytepos++] = 0x06; //Object type
p[bytepos++] = Convert.ToByte(oid_len2 - 1); //length

//Start of MIB
p[bytepos++] = 0x2b;

//Place MIB array in packet
for (i2 = 2; i2 < oid_len2; i2++)
    p[bytepos++] = Convert.ToByte(oid2[i2]);

p[bytepos++] = 0x05; //Null object value
p[bytepos++] = 0x00; //Null

私はたくさんグーグルで検索しましたが、関連するものが見つかりませんでした。

4

1 に答える 1

3

生のバイトから SNMP PDU を解析することは、貼り付けたコード セグメントほど単純ではありません。

C# で SNMP を真剣に使用するには、次のライブラリのいずれかを検討する必要があります。

http://www.lextm.com/2007/12/product-review-snmp-libraries-for-net.html

于 2012-05-12T12:06:29.807 に答える