IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

SNMP API windows valeur en char*


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Juin 2011
    Messages
    54
    D�tails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 54
    Par d�faut SNMP API windows valeur en char*
    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:

    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);
    }
    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!
    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

  2. #2
    Membre averti
    Inscrit en
    Juin 2011
    Messages
    54
    D�tails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 54
    Par d�faut
    J'ai trouv�:
    itoa(*snmpVarList.list->value.asnValue.address.stream, test, 10);
    je recup�re bien 172 dans test, maintenant je voudrais recuperer l'ensemble de l'IP, pas simplement le premier digit.

  3. #3
    Membre averti
    Inscrit en
    Juin 2011
    Messages
    54
    D�tails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 54
    Par d�faut
    Olala... une chose etrange!

    J'interroge la mib et suivant les OID interrog�s, la r�ponse a diff�rent aspects. Par exemple:
    OID1 = 10150
    OID2 = 172.153.2.1

    pour le premier OID, "snmpVarList.list->value.asnValue.address.stream" est nul
    pour le deuxi�me, il vaut 172,
    je comprend vraiment pas ou exactement r�cuperer la valeur de l'OID quelle que soit la forme!!

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    D�tails du profil
    Informations personnelles :
    Localisation : France, Paris (�le de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Par d�faut
    Salut !

    Citation Envoy� par Persnip77 Voir le message
    J'ai trouv�:
    itoa(*snmpVarList.list->value.asnValue.address.stream, test, 10);
    je recup�re bien 172 dans test, maintenant je voudrais recuperer l'ensemble de l'IP, pas simplement le premier digit.
    Je vois que ton syst�me utilise un syst�me de liste pas tr�s fiable. Quoi qu'il en soit, lorsque tu r�cup�res 172, tu r�cup�res le premier �l�ment d'une liste qui en fait 4 (je vois dans le d�buggueur length = 4). Donc pour r�cup�rer la suite, il faut incr�menter le pointeur.

    De plus itoa est du C et pas du C++. Je te donne le code pour faire �a en C++ proprement.

    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
     
    unsigned char * myStream = snmpVarList.list->value.asnValue.address.stream;
    int length = snmpVarList.list->value.asnValue.address.length;
     
      std::ostringstream out;
      for(int i = 0; i < length; i++)
      {
        out << static_cast<int>(*myStream);
        if(i < length - 1)
          out << '.';
     
        myStream++;
      }
     
      std::cout << out.str() << std::endl;

  5. #5
    Membre averti
    Inscrit en
    Juin 2011
    Messages
    54
    D�tails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 54
    Par d�faut
    Merci jblecanard,
    �a marche nikel crome

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 29
    Dernier message: 14/01/2013, 10h40
  2. R�ponses: 5
    Dernier message: 16/04/2009, 17h00
  3. tutoriel : La programmation de l'API Windows en C++ par Bob
    Par Aurelien.Regat-Barrel dans le forum Windows
    R�ponses: 19
    Dernier message: 21/06/2008, 14h34
  4. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    R�ponses: 1
    Dernier message: 16/11/2006, 15h28
  5. Utilisation de Pointeurs dans API windows
    Par Drooxy dans le forum API, COM et SDKs
    R�ponses: 4
    Dernier message: 13/03/2003, 22h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo