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 :

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;
}
Ce que je souhaite savoir, c’est comment vérifier que le contenue du retour de la fonction est bien ip+icmp ??
Ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
char * tempo = createICMPpaquet(icmp, ip);
Note :
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 ?