SNMP PDU 中的变量绑定

问题描述 投票:0回答:1

我正在用 C# 开发一个 SNMP 实用程序,它可以使用 SNMP 版本 1 数据包格式从指定设备 OID 获取数据。

我已经快完成了,但这是一个我无法解决的问题。

我通过发送单个“获取”数据包成功查询一个变量,但我需要通过发送单个数据包查询多个变量。

我尝试过这样的方法:

//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

我用谷歌搜索了很多,但找不到任何相关的东西。

c# udp snmp packet pdu
1个回答
3
投票

从原始字节解析 SNMP PDU 绝不会像您粘贴的代码段那么简单。

要在 C# 中认真使用 SNMP,您需要考虑以下库之一,

https://docs.lextudio.com/blog/product-review-snmp-libraries-for-net-evaluation-report-e13f25991cad

© www.soinside.com 2019 - 2024. All rights reserved.