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