Les Forums

Les Forums

Les forums sont fermés. Ils restent présent pour consultation et archivage.
Vous pouvez désormais poser vos questions directement dans les commentaires en bas de chaque page du site.
Alors n'hésitez pas à participer

Trame réseau. conception

bonjour à tous,
je fais un programme utilisant winsok2.h et donc le réseau (tcp/ip).
je souhaiterais envoyer entre les 2 modules une trame qui est composée de données contenue dans une structure de données:
struct trame
{
int var1;
char var2[20];
short var3;
}

je voudrais savoir comment il faut envoyer cette trame sur le reseau?
je pensais convertir en caracteres (exemple: 11 -> '1' '1' -> "11") (puisque la trame est assez petite) en utilisant un séparateur (tramecodee[taille] = "var1#var2#var3") puis "parser" la trame à l'arrivée, mais je ne sais pas si c'est la bonne solution.

quelqu'un peut il me renseigner sur la meilleure méthode à employer.
rque:
la trame est assez petite (800 octets max) et sera envoyée à raison de 10 trames par seconde sur le réseau.


merci d'avance.
Si c'est ça ta trame va contenir ce type, elle ne pourra pas mesurer plus de :
Len("4294967296") + 1 + (20 * Len("256")) + 20 + 1 + Len("65536")
soit 97 caractères si tu utilise des virgules pour séparer chaque variable ET des tirets (au autre) pour séparer chaque cellule du tableau. Donc, ça donnerais
var1,var2_cel1-var2_cel2-var2_cel3-var2_cel4-var2_cel5,var3

Je ne sais pas comment ça va se passer avec ton tableau. Doit-il inclure les cellules vides? Je ne suis pas un bon programmeur de c++. Je fais du vb et un tout petit peu de c++

Pour le "parsage", il va falloir diviser la chaine de caractères en 3 VARIABLES : var1, var2(UNE CHAINE DE CARACTÈRE QUI CONTIENT TOUT LES ÉLÉMENTS SÉPARÉS PAR UN TIRET) et var3. Après, il va falloir "parser" la chaine de caractère et remplir le tableau.

J'espère que ça t'aidera
merci
j'ai deja fait le code, c'est asser simpe, j'utilise le # comme séparateur, pour le tableau, comme c'est une chaine ben je ne separe pas les cellule. enuite un peu de strtok (tres pratique cette fnction pour parser des chaines...) et hop le tour est joué...
ne fait, la question queje me posait était de savoir si c'etait la bonne facon de faire que de convertir en une grande chaine ma structure de donnees, ou si il y avait une autre facon de faire.

voila
merci
Bonjour,

Pour envoyer la structure complète d'un pc à un autre il n'y a pas besoin de reconvertir la donnée il suffit de donner directement son adresse mémoire :

lResult = send (socket, &trame, sizeof(trame), 0);

le nombre d'octet envoyé sera donc de 4 (int var1) + 20 (char var2[20]) + 2 (short var3) = 26 octets.