cs_julien20vt
Messages postés43Date d'inscriptionjeudi 4 juillet 2002StatutMembreDernière intervention10 novembre 2004
-
23 avril 2003 à 11:51
cs_julien20vt
Messages postés43Date d'inscriptionjeudi 4 juillet 2002StatutMembreDernière intervention10 novembre 2004
-
25 avril 2003 à 10:48
Maintenant que j'ai réussi à envoyer des char, des int[], je voudrais envoyer un structure faite maison.
Le pb est que le socket n'accepte que les char * et que ma structure ne veut pas se laisser caster en char *.
Auriez vous une solution à me proposer ?
Le pire c'est qu'il y a quelques mois en C, j'avais fait un prog avec des sockets et je pouvais y envoyer des structures, c'est étonnant qu'en C++ ce ne soit pas possible.
CoreBreaker
Messages postés540Date d'inscriptiondimanche 23 mars 2003StatutMembreDernière intervention 5 octobre 20071 23 avril 2003 à 14:13
Il faut sérialiser ta structure cad que tu transformes les données contenues dans la structure (attention aux pointeurs: la sérialisation doit serialiser les données déréférencées) en une chaine d'octets, par ex:
cs_julien20vt
Messages postés43Date d'inscriptionjeudi 4 juillet 2002StatutMembreDernière intervention10 novembre 2004 23 avril 2003 à 14:22
Je vais te décevoir, mais je n'ai pas compris ce que tu voulais dire.
Concrètement mon pb est :
j'initialise un objet de ma structure, et je veux envoyer cet objet sur un socket. Pour ce faire, il faut que je le caste en char *.
Peut-etre qu'effectivement l'union est la bonne solution pour résoudre mon pb, toujours est il que je n'ai pas compris comment il fallait que je fasse.
Désolé d'être ignorant (je le suis un peu moins chaque jour heureusement) et en tous cas merci pour l'aide.
Si tu as le courage de me réexpliquer tout ca, je suis preneur.
CoreBreaker
Messages postés540Date d'inscriptiondimanche 23 mars 2003StatutMembreDernière intervention 5 octobre 20071 23 avril 2003 à 20:24
Le cast d'une structure en char * est impossible car les 2 types ne sont pas compatibles.
En fait sérialiser la structure revient à l'écrire dans un flux comme un fichier, comme ca:
struct s v; // une variable sur ta structure
fwrite(&v, 1, sizeof(v), fichier);
Imagine qu'à la place du flux du fichier ce soit le flux de ta socket.
Si tu veux, envoi moi le source à metaos@free.fr et je le compléterai.