Le fait que tu utilises des sockets ne change rien au probleme en fait, tu utilises les memes fonctions standard read/write j'imagine (si tu utilise une connexion TCP)
Or avec ces fonctions, tu peux ecrire et lire ce que tu veux, pourvu que:
1) tu connaisses la taille de ce que tu ecris.
2) tu connaisses la taille et le type de ce que tu lis.
Bref, si tu ecris un tableau de 10 entiers avec write, il faut que de l'autre cote tu trouves le moyen d'identifier le type en question (un tableau de int en l'occurence) et sa taille. Or, autant pour le texte, c'est facile a faire, pour du binaire (tout ce qui n'est pas du texte en gros) il faut que tu t'imposes ton mini protocole.
Une solution simple est de d'utiliser une structure d'entete, quelque chose qui te donne justement les infos voules:
struct s_header
{
int size;
int type;
// eventuellement les donnees apres
};
avant chaque write, tu remplis les infos qui vont bien dans ta structure, t'y ajoute les donnees et hop, tu envois!
Ensuite pour la lecture, etant donne que tu sais que tu dois lire une structure de type s_header, tu le fais.
Avec ca tu reccupere la taille et le type des donnees qui suivent, il te suffit juste de relire les donnees.
Evidement, ca demande d'ajouter (au besoin) certains controles sur les tailles, de bien definir les types echanges etc...
Attention, lorsque que tu lis ou ecris une structure, ne fais pas l'erreur de mettre des pointeurs dedans auquel cas tu lirais ou ecrirais la valeur du pointeur (l'addresse donc) et non les données pointes! (un pointeur c'est en general 32bits donc 4 caracteres)
Voila, j'espere que ca te mettra sur la piste, j'ai assume que tu utilisais le C.