在C#中实现SNMP批量获取数据可以使用SNMP库,比如SharpSnmpLib。下面是一个简单的示例代码,演示如何使用SharpSnmpLib库来批量获取数据:
using System; using System.Collections.Generic; using Lextm.SharpSnmpLib; using Lextm.SharpSnmpLib.Messaging; class Program { static void Main() { // 创建SNMP管理器 var manager = new ObjectStore(); // 设置要获取的OID列表 var oids = new List(); oids.Add(new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))); // 系统描述信息 oids.Add(new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.3.0"))); // 系统运行时间 // 创建SNMP请求 var request = new GetRequestMessage(0, VersionCode.V2, new OctetString("public"), oids); // 发送请求并获取响应 var result = Messenger.Get ("udp:127.0.0.1/161", request, 6000); // 处理响应 if (result != null) { foreach (var variable in result.Pdu().Variables) { Console.WriteLine("{0} = {1}", variable.Id, variable.Data.ToString()); } } else { Console.WriteLine("No response received."); } } }
在这个示例中,我们首先创建了一个SNMP管理器ObjectStore
,然后设置要获取的OID列表,并创建了一个SNMP请求GetRequestMessage
,最后发送请求并处理响应。通过这种方式,你可以批量获取多个OID的数据。请注意,你需要替换示例代码中的IP地址、OID和Community字符串为你实际的设备信息。