2016-06-16 2 views
0

#snmp (Lextm.SharpSnmpLib.9.0.1) 및 C#을 사용하여 시스템 가동 시간을 모니터링하려고합니다.SharpSnmp로 원시 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); 
    } 

그러나 형 TimeTicks의 응답을 .DATA 속성을 얻으려고 할 때 나는 CS0103 오류를 받고 있어요.

여기 enter image description here

이 버그가 아닌 경우 VS2015 의 검사 창 내가 #snmp 사용하여 원시 틱 값에 액세스 할 수있는 방법이야?

+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 메서드가 실제로 TimeSpan에 기반한 문자열을 생성하는 것을 볼 수 있습니다. 따라서 구문 분석을 시도 할 때 예외가 발생하는 이유는 int입니다.

이 OID에 대해서는 이미 DataTimeTicks 일 것입니다. 그 유형으로 변환 한 다음 ToUInt32을 호출해야합니다.

관련 문제