Bonjour tout le monde,
Je fais appel a vous car je suis dans l’incompréhension total.
J’ai deux classes qui me créent chacune des objets. Le premier a une taille de 20 (IP) et l’autre une taille de 8 (ICMP). Chaque objet est composé d’élément simple (int, short, char).
Ce que je souhaite faire c’est stocker les valeurs de mon objet dans un seul tableau. Pour cela j’ai créé la fonction suivante :
Ce que je souhaite savoir, c’est comment vérifier que le contenue du retour de la fonction est bien ip+icmp ??
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 char * createICMPpaquet(ICMP icmp, IP ip) { char *ptr = NULL, paquet[28]; //28 représente la taille de ICMP + IP int icmpT = sizeof(icmp); //8 int ipT = sizeof(ip); //20 ICMP * icmpP = &icmp; IP * ipP = &ip; //&ip donne l'adresse physique de la variable ZeroMemory(paquet, sizeof(paquet)); //permet de remplir un bloc de mémoire avec des 0 ptr = paquet; memcpy(ptr, ipP, sizeof(ip)); ptr += sizeof(ip); memcpy(ptr, icmpP, sizeof(icmp)); ptr += sizeof(icmp); return paquet; }
Ex :
Note :
Code : Sélectionner tout - Visualiser dans une fenêtre à part char * tempo = createICMPpaquet(icmp, ip);
1 j’utilise ce char * afin de l’envoyer au travers de socket RAW et de la fonction sendto().
2 Le retour de sendto me donne 4 alors qu’il devrait me donner 28, ou est ou erreur ?
Partager