Messieurs, Dames ("les mecs", quoi),
Je dois transmettre une stucture (une "struct" au sens de C, bien évidemment) via une socket, et j'ai vu partout sur d'autres forum "qu'il faut sérialiser la structure, car simplement transmettre un pointeur dessus revient à copier une adresse mémoire qui n'aura pas de sens pour la machine receveuse".
Or j'ai testé d'envoyer un pointeur sur ma structure et j'ai quand même l'impression que l'on transmet une "copie profonde" de la structure (j'ai l'impression de bien transmettre par copie et non par valeur).
Je vous mets le code client:
le code serveur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct trame trametest; trametest.Struct_Size = 25; char * test = (char *)&trametest; //tout le bordel de configuration de la socket, je passe //puis: send(sock ,test, sizeof(trametest) , 0 );
J'ai beau afficher des adresses dans tous les sens, je ne trouve aucune adresse commune, comme si je n'avais pas transmis ma structure par référence, mais par valeur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 struct trame trametest; valread = read( new_socket , buffer, sizeof(trametest)); trame *test = (trame *)buffer;
Qu'en pensez-vous?
cordialement
Partager