我将使用shrarpsnmp库来开发用于SNMPv2设备的Manager。 我不明白我应该使用哪种API。例如,我想呼叫snmp获取请求到设备。 存在两种方式来做到这一点:Sharpsnmp SNMPv2和SNMPv3的API差别
1)
GetRequestMessage request = new GetRequestMessage(VersionCode.V2,
Messenger.NextMessageId, Messenger.NextRequestId, new OctetString("myname"),
new List<variable>{new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))},
priv, Messenger.MaxMessageSize, report);
ISnmpMessage reply = request.GetResponse(60000, new
IPEndPoint(IPAddress.Parse("192.168.1.2"), 161));
if (reply.Pdu().ErrorStatus.ToInt32() != 0) // != ErrorCode.NoError
{
throw ErrorException.Create(
"error in response",
IPAddress.Parse("192.168.1.2"),
reply);
}
2)
var result = Messenger.Get(VersionCode.V2,
new IPEndPoint(IPAddress.Parse("192.168.1.2"), 161),
new OctetString("public"),
new List<Variable>{new Variable(new ObjectIdentifier("1.3.6.1.2.1.1.1.0"))},
60000);
这是什么两种方法之间的区别? 哪个会正确使用SNMPv2,还是可以使用?
1,你选择了一个错误的构造函数。 https://github.com/lextm/sharpsnmplib/blob/master/SharpSnmpLib/Messaging/Messenger.cs#L547'Messenger.Get'的源代码可以告诉你使用哪一个。当然,即使你使用错误的构造函数,它仍然可以工作,并且负面影响是一些参数被浪费了。 –