2016-06-16 16 views
0

#snmp(Lextm.SharpSnmpLib.9.0.1)とC#を使用して、システムの稼働時間を監視しようとしています。SharpSnmpでRaw TimeTicksを取得するには?

は、ここに私のコードです:

 public int GetUptime() 
    { 
     var uptimeMessage = new GetNextRequestMessage(0, VersionCode.V1, new OctetString("public"), 
      new List<Variable> 
      { 
       new Variable(new ObjectIdentifier(Oids.SystemUpTime)) 
      }); 
     var response = uptimeMessage.GetResponse(10000, _agentEndPoint); 
     var ticks = response.Pdu().Variables[0].Data.ToString(); 
     return int.Parse(ticks); 
    } 

しかしタイプの時間刻みの応答のための.DATAプロパティを取得しようとしたとき、私はCS0103エラーを取得しています。

ここでVS2015 の検査ウィンドウが、これはバグではない場合、どのように私は#snmp使用して生の刻み値にアクセスすることができますenter image description here

ですか?

+0

'Data 'の何かが、' _count'にアクセスする必要があるときに、存在しない 'count'にアクセスしようとしています。 – wablab

+0

@NomadaちょうどOid.SystemUpTimeは点線のoid文字列か文字列oidですか?文字列のoidを点線のoidに相当するものに変換しようとしています。どんなコード例も素晴らしいでしょう。 – Joseph

+0

@Joseph Oidsは、const文字列を持つ静的クラスです。例: 'public const string SysUpTime =" 1.3.6.1.2.1.1.3 ";' 'public const string SystemUpTime =" 1.3.6.1.2.1.25.1.1 "; ' – Nomada

答えて

1

このライブラリのTimeTicksのソースコードを確認すると、実際にToStringメソッドが.NET TimeSpanに基づく文字列を生成することがわかります。だからこそ、それを解析しようとすると、int例外が来るのです。

このOIDに関しては、DataTimeTicksであることが既にわかっています。そのタイプにキャストしてからToUInt32を呼び出す必要があります。

関連する問題