Se connecter avec
S'enregistrer | Connectez-vous

[cpp]Envoyer une structure par winsock

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte
Expert Programmation

Ce n'est pas bon d'envoyer une structure en C directement dans une socket, car en C, selon le mode de compilation et la plateforme cible, les variables peuvent s'aligner différemment (sur 2, 4 octets ou autres).
exemple: sur un alignement sur 4 octets {int,short,short} prend 8 octets, mais {int,short} prend également 8 octet (car 6 n'est pas un multiple de 4). C'est donc une origine de bugs pas forcément visible au début.
Donc, il ne faut jamais envoyer une structure dans un flux de données sérialisés, d'autant plus que les sockets permettent de communiquer des architecture totalement différentes !

En pratique, in faut tout mettre à plat dans un buffer et envoyer le buffer.
Pour faire propre, de chaque côté du tuyau, il faut voir la même chose. L'idéal est de bien spécifier le format du buffer, et faire des constantes pour définir les offsets et tailles des morceaux du buffer.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde