Bonjour à tous,
Je travail sous VisualC++ 2008.
Je developpe une application qui interroge les mibs des routeurs et utilise les résultats par la suite, voici mon code:
Je voudrais recuperer la valeur de la variable ayant cet OID ".1.3.6.1.3.59.1.1.1.1.5.10102". J'essaye de travailler sur "snmpVarList.list->value.asnValue.address.stream" qui est un BYTE*, du moins c'est l'info que me donne visual lorsque je passe mon curseur de souris dessus!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 SnmpVarBindList snmpVarList; AsnInteger errorStatus,errorIndex; snmpVarList.list = NULL; snmpVarList.len = 1; snmpVarList.list = (SnmpVarBind *)realloc(snmpVarList.list, sizeof(SnmpVarBind) *snmpVarList.len); LPSNMP_MGR_SESSION session; char resultat[MAX_PATH]; //ouverture de session (ip + type: private/public) session = SnmpMgrOpen("192.168.12.3","com_tmp",1000,3); if (session!=0) { SnmpMgrStrToOid(".1.3.6.1.3.59.1.1.1.1.5.10102",&snmpVarList.list->name); if (SnmpMgrRequest(session,SNMP_PDU_GET,&snmpVarList,&errorStatus,&errorIndex)!=0) { if (errorStatus==SNMP_ERRORSTATUS_NOERROR) { SnmpUtilPrintAsnAny(&snmpVarList.list->value); } } char test[200]; initialise_tableau_char(test,sizeof(test),'\0'); strcpy(test,(char*)snmpVarList.list->value.asnValue.address.stream); //fermeture SnmpMgrClose(session); }
Car lorsque je lance en mode pas à pas, je me rend compte que cette variable est en fait un "unsigned char":
Le resultat que je doit trouver est une adresse ip commencant par 172.x.x.x
J'ai donc essayé de faire tout simplement un casting, le problème: je ne recupère pas le "172" mais le '¬', comment faire?
Merci d'avance
Partager