Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 17 juil. 2003 à 01:06
Est ce que tu est sur que le serveur doit te renvoyer quelque chose après la réception de ton paquet ? Sinon, essaye avec des char[1024] (bizarement, j'ai déja eu des problème avec les char* en socket)
Et pi tu na pas besoin de mettre "(char*)data", un "data" tout court suffit je crois
_________________________
Heureux l'étudiant qui comme la rivière peut suivre son cours sans quitter son lit
piemur2000
Messages postés5Date d'inscriptionlundi 12 mai 2003StatutMembreDernière intervention17 juillet 2003 17 juil. 2003 à 10:43
J'ai fait le serveur donc je c que quand je me connecte il doit m'envoyer des données contenues dans data qui est une instance de la classe Donnees. Ca marche si je lui envoi un char, mais si je veu envoyer une classe ca marche pas. Et si je ne met pas le "(char*)data" ca me fait une erreur pke data c'est pas un char*...
cs_Kaid
Messages postés949Date d'inscriptionmardi 2 octobre 2001StatutMembreDernière intervention 8 juillet 20061 17 juil. 2003 à 11:35
Normal que ca ne marche pas, c'est un peu du n'importe quoi ce que tu essayes de faire, tu envois l'adresse de l'instance d'une classe sur une machine A et tu espères que la machine B fera quelques choses de cette adresse. Or cette adresse mémoire est une adresse dans la mémoire de la machine A, la machine B ne peut absolument rien en faire.
Si tu veux transmettre des objets via un socket, il faut que tu mettes en place le mécanisme de sérialisation. Soit tu dérives tes classes de classes MFC, soit tu utilises une bibliothèque externe ou tu la gère à la main. Ta classe ainsi sérialisée sera capable grâce à deux méthodes:
- De mettre dans un tableau de caractères (ou autre) la valeur de tous les attributs de l'instance,
- Et, à partir de cette chaine, de recréer un objet complétement identique au premier.
Quand tu auras mis en place ce mécanisme, il suffira de faire "naviguer" des chaines de caractères sur le réseau.