[pointeur ou pas?] transmettre une structure via une socket
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:
Code:
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 ); |
le code serveur:
Code:
1 2 3 4
|
struct trame trametest;
valread = read( new_socket , buffer, sizeof(trametest));
trame *test = (trame *)buffer; |
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...
Qu'en pensez-vous?
cordialement