在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字符串為你實際的設備信息。