Bonjour,

Depuis quelques jours je me suis penché sur les socket afin de regarder comment tout sa fonctionne.
Le problème que je rencontre viens au moment de l'envoie/réception de paquets différent d'un simple string.
Je souhaite envoyé des paquet sous la forme suivante:
http://www.assembla.com/code/pommo/s...eur.PNG?rev=57
En envoie on fait un paquet avec toutes les données (header+data).
En réception on lit le header en premier (qui a la même structure a chaque fois) afin de savoir:
  • Le type de packet: pour savoir le type et l'ordre des donnée envoyé
  • La taille du packet: si un string est envoyé, sa taille varie, la taille a lire sera donc variable.

puis on lit les data suivant le header.

J'ai penser à utiliser des struct au début, mais sa risque d'être assez lourd niveau code si je dois avoir un struct / type de paquet (dans le cas d'un grand nombre de paquets différents)

La fonction send() et recv() des socket prennent en paramètre pour le buffer, un pointeur de type char, et la taille des données a envoyé/lire.

Je cherche donc a partir d'un pointeur char:
char * buffer =(char*) malloc(1024 * sizeof(char));
  • A "écrire" des int/short/float... dans ce buffer
    Par exemple:
    ecrire(buffer,int a); //On écris au début du buffer un entier
    ecrire(buffer+4,int b); //On écris un entier apres le précédent (4 octet plus loin)
    ecrire(buffer+8,float c);//On écris un float après les deux int
  • Et à lire ces information dans le buffer en réception, exemple:
    int a=lire(buffer);
    int b=lire(buffer + 4);
    float c=lire(buffer + 8);


Voila tout

Socolin.