Ich werde shrarpsnmp Bibliothek für Entwicklung Manager für SNMPv2-Geräte verwenden. Ich verstehe diese Art von API, die ich verwenden sollte. Zum Beispiel möchte ich Anruf snmp Anfrage an Gerät erhalten. zwei Möglichkeiten existieren, das zu tun:Sharpsnmp API Unterschied für SNMPv2 und SNMPv3
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);
Was zwischen diesen beiden Methoden ist der Unterschied? Und die SNMPv2 korrekt verwendet oder kann entweder verwendet werden?
In 1 haben Sie einen falschen Konstruktor gewählt. https://github.com/lextm/sharpsnmplib/blob/master/SharpSnmpLib/Messaging/Messenger.cs#L547 Der Quellcode von 'Messenger.Get' kann Ihnen sagen, welche Sie verwenden sollen. Selbst wenn Sie den falschen Konstruktor verwenden, funktioniert es natürlich immer noch, und der negative Effekt ist, dass einige Parameter verschwendet werden. –