ghost260984
Messages postés20Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention14 décembre 2004
-
26 mai 2004 à 14:25
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
26 mai 2004 à 16:55
J ai creer un projet en VB qui entre autre récupérait l'adresse IP reso de la machine grace a l API GetIpAddrTable , maintenant je réutilise cette API en c++ et les résultat de l API sont differents , et donc je ne trouve plus l adresse IP de la machine .
Voici le code de ma fonction :
ghost260984
Messages postés20Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention14 décembre 2004 26 mai 2004 à 15:16
En fait je n ai pas d exemple dans msdn , j ai juste le prototype de l API , mais que fasse appel a une API window avec vb ou c ou delphi je devrait avoir le meme resultat qui est l adresse IP de ma machine or ici ce n est pas le cas , donc je voulais savoir si quelqu un avait deja utiliser cette api afin de voir ou j avais fait une erreur.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 mai 2004 à 15:28
The following example retrieves the IP address table, then adds the IP address 192.168.0.27 to the first adapter. The IP address that was added is then deleted.
// Before calling AddIPAddress we use GetIpAddrTable to get
// an adapter to which we can add the IP.
PMIB_IPADDRTABLE pIPAddrTable;
DWORD dwSize = 0;
// Make an initial call to GetIpAddrTable to get the
// necessary size into the dwSize variable
if (GetIpAddrTable(pIPAddrTable, &dwSize, 0) == ERROR_INSUFFICIENT_BUFFER) {
GlobalFree( pIPAddrTable );
pIPAddrTable = (MIB_IPADDRTABLE *) malloc ( dwSize );
}
// Make a second call to GetIpAddrTable to get the
// actual data we wantif ( (dwRetVal GetIpAddrTable( pIPAddrTable, &dwSize, 0 )) NO_ERROR ) {
printf("\tAddress: %ld\n", pIPAddrTable->table[0].dwAddr);
printf("\tMask: %ld\n", pIPAddrTable->table[0].dwMask);
printf("\tIndex: %ld\n", pIPAddrTable->table[0].dwIndex);
printf("\tBCast: %ld\n", pIPAddrTable->table[0].dwBCastAddr);
printf("\tReasm: %ld\n", pIPAddrTable->table[0].dwReasmSize);
}
else {
printf("Call to GetIpAddrTable failed.\n");
}
// IP and mask we will be adding
UINT iaIPAddress;
UINT imIPMask;
// Delete the IP we just added using the NTEContext
// variable where the handle was returnedif ((dwRetVal DeleteIPAddress(NTEContext)) NO_ERROR) {
printf("\tIP Address Deleted.\n");
}
else {
printf("\tCall to DeleteIPAddress failed.\n");
}
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 mai 2004 à 15:35
resultat = new char[1];
et plus bas
strcat(resultat,temp);
NENNI, strcat RIEN DU TOUT sur 1 SEUL octet, il en faut au moins 2 pour faire une chaine.
Commence par apprendre le C sinon tu ne pourras pas avancer.
ciao...
BruNews, Admin CS, MVP Visual C++
Vous n’avez pas trouvé la réponse que vous recherchez ?
ghost260984
Messages postés20Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention14 décembre 2004 26 mai 2004 à 16:15
le language ne m interdit pas de faire des chaines de 1caracteres ni de faire des copie de chaines de la meme taille mais au depart ces chaines etaient destinnees a autres chose et puis je les aient reutilisee comme ca pour les preservee mais elle n ont plus raison d etre alors je vais modifier ca
ghost260984
Messages postés20Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention14 décembre 2004 26 mai 2004 à 16:17
je reviens 2 secondes sur ce que j ai dit en fait un tableau est un pointeur sur une zone de la memoire si cette zone se resume a un octet ce n est pas genant j aurais un pointeur sur un caractere donc cela ne gene en rien mon code , a moins que je n ai tort?
ghost260984
Messages postés20Date d'inscriptionmercredi 18 juin 2003StatutMembreDernière intervention14 décembre 2004 26 mai 2004 à 16:48
tout a fait d accord mais dans cet exemple ce n ai pas bien genant car le strcat redimmenssionne mon tableau de caractere a la taille voulue , mais c est vrai ke si je voulais y mettre un caractere la j aurais des petits soucis , mais en fait je viens de me souvenir pourkoi j ai un tableau de un caractere , en fait c est juste que quand j utilise un tableau dans strcat celui ci doit etre initialise auparavant donc j ai creer le tableau le plus petit possible afin de ne pas prendre de memoire inutilement ( zen fait c etait pour ca c etait juste de la bidouille ;-)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 mai 2004 à 16:55
Je repete, AUCUN strcat sur un char[1] et pour quelque raison que ce soit.
Ensuite tu fais comme tu veux, on ne peut pas t'obliger mais faudra pas chercher le bug bien loin, il y aura forcement ecrasement de donnees.