cs_bouba
Messages postés518Date d'inscriptiondimanche 2 décembre 2001StatutMembreDernière intervention10 novembre 2007
-
26 janv. 2004 à 20:25
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 2012
-
26 janv. 2004 à 22:20
Voila, j'ai un problème d'envoi de structure. (Sous UNIX)
J'ai une structure comme cellle-ci.
struct SPDU_TYPE
{
char SI;
int LI;
struct PARAM_TYPE PARAM[NB_MAX_PARAM];
char* INFO;
};
struct PARAM_TYPE
{
char PI;
int LI;
char* PV;
};
J'ai deux programmes un client et un serveur, le client envoi une structure au serveur.
// Le client après avoir initialisé MonSPDU (de type struct SPDU_TYPE), jusqu'ici pas de
// problèmes
send(s, &MonSPDU , sizeof(MonSPDU), 0);
// Mais c'est a la reception que ca marche pas bien, voici ce que fait le serveur
recv(point_de_connexion , &MonSPDU, sizeof(struct SPDU_TYPE), 0);
printf("| SPDU reçu:\n");
printf("| - SI = %d\n", MonSPDU.SI);
printf("| - Champ d'informations: "%s"\n", MonSPDU.INFO);
En fait y'a un problème pour les chaînes de caractère que je n'arrive pas résoudre, voici ce que m'affiche le programme serveur
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 26 janv. 2004 à 20:45
Salut,
Dans la structure il n'y a pas de tableau de char, mais juste un pointeur char*. Lors du transfert, tu n'envoies que le pointeur, mais pas la chaine.
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 26 janv. 2004 à 22:20
Salut,
La structure que tu recois est exactement identique a celle que tu envoies. Seulement, la chaine pointée par INFO est exterieure a la structure, et donc elle n'est pas envoyée.
Moi je mettrais un tableau de char directement dans la structure.