如何使用SNMPSharpNet获取原始时间标记?

时间:2014-04-03 22:45:26

标签: c# snmp

我正在编写一个应用程序来监控SNMP设备并将数据保存到SQL中。但是我遇到了时间戳问题。

大多数值都可以像浮点数一样轻松记录。原始时间戳数字也很容易存储。但是,当我运行(SnmpV1Packet)target.Request(pdu, param);时,SNMPSharpNet返回一个字符串,其值已解码:0d 4h 56m 0s 0ms

我想我可以解析这个值,但是将数字转换两次似乎是浪费周期。如何获得原始毫秒数?

1 个答案:

答案 0 :(得分:0)

您是否尝试将AsnType转换为SnmpSharpNet.TimeTicks

UdpTarget target = new UdpTarget(IPAddress.Parse("192.168.1.1"));
Pdu pdu = new Pdu(PduType.Get);
pdu.VbList.Add("1.3.6.1.2.1.1.3.0");
AgentParameters param = new AgentParameters(SnmpVersion.Ver1, new OctetString("public"));
SnmpV1Packet packet = (SnmpV1Packet)target.Request(pdu, param);
AsnType uptimeAsn = packet.Pdu.VbList["1.3.6.1.2.1.1.3.0"].Value;

long uptime = ((TimeTicks)uptimeAsn).Milliseconds;

Console.WriteLine(uptime);
Console.WriteLine(new TimeSpan(0,0,(int)(uptime/1000)));

请确保使用try / catch包围此内容,以防转换失败。