Bonjour à tous.

Je travaille avec des sockets et j'ai besoin d'echangers des ordres entre un client et un serveur. Je n'ai jamais travaillé en binaire et je ne suis pas sur de ma methode.


En gros je pense decomposer un message type de la sorte :

les 16 premiers bit pour indiquer la longueur totale du message en bit (toujours 16 bit)
les 4 bits suivant pour definir le type d'ordre à executer
(les parametres suivants dependent du type d'ordre mais par ex)
2 bit pour une direction
3 bit pour une vitesse (soit 8 vitesse possible)
etc...


Donc dans ce cas on à forcement un message de 25 bits envoyé sur le socket. Je ne sais pas si je fais pas une erreur de methode à ce niveau deja.


Ensuite la reception. Avant je travaillais avec des char et je lisais les données comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
char buffer[200];
nb=recv(socket,&buffer,sizeof(buffer),0);
Je pense que maintenant je suis censé utiliser un tableau de boolean mais j'ai lu q'un boolean utilisait autant de mémoire q'un char soit 1 octet ...

Donc soit je reste sur un tableau de char sachant la j'ai par exemple 25 bit qui ne tombe pas sur un multiple d'octet. Soit je passe sur un tableau de bool.

Mais dans les deux cas, quelle est la methode la plus simple pour decomposer le message connaissant sa structure à l'avance ? Je vois bien l'utilité des >> et des masque mais je vois mal comment l'utiliser si la valeur est a cheval sur 2 octets !!

Ou alors je me plante completement.

Pouvez-vous me donner une petite explication ?

Merci à tous