在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<Variable>();
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<GetResponseMessage>("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字符串为你实际的设备信息。