我正在编写一个应用程序来监控SNMP设备并将数据保存到SQL中。但是我遇到了时间戳问题。
大多数值都可以像浮点数一样轻松记录。原始时间戳数字也很容易存储。但是,当我运行(SnmpV1Packet)target.Request(pdu, param);
时,SNMPSharpNet返回一个字符串,其值已解码:0d 4h 56m 0s 0ms
我想我可以解析这个值,但是将数字转换两次似乎是浪费周期。如何获得原始毫秒数?
答案 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包围此内容,以防转换失败。