smoove5198
Messages postés25Date d'inscriptiondimanche 26 octobre 2003StatutMembreDernière intervention13 septembre 2005
-
15 mars 2005 à 03:52
cs_Matt67
Messages postés549Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention 6 mars 2010
-
17 mars 2005 à 06:42
Bonjour,
J'ai commencé a ecrire une classe permettant, en fonction de la facon
dont on l'instancie, de gerer une connection cliente ou serveur : pour
cela j'utilise des sockets.
Pour l'instant tout fonctionne a merveille mais je bute sur un probleme
: je souhaiterai pouvoir envoyer tout type de données ( pas seulement
des chaines de caracteres )
voila un exemple pour bien me faire comprendre :
//*********************************************//
// une structure de données quelconque
struct TStruct
{
char Chaine[20];
int Entier;
};
// les fonctions que j'utilise pour l'envoyer et la recevoir ( les fonctions de base de winsock2.h )
int send ( SOCKET s, char *buffer, int bufferLen, int flag);
int recv ( SOCKET s, char *buffer, int bufferLen, int flag);
// ce que j'ai essayé mais qui ne marche pas ( je vous montre que le send, ca suffit pour
Donc voila ! Jusque la je pensais que d'une facon ou d'une autre il
etait possible de transtiper tout ce qu'on voulait en chaine de
caractere ( par exemple ca fonctionne pour la fonction d'ecriture en
binaire dans une fichier de iostream.h ). Mais j'ai peu etre tord ...
En tous les cas si vous connaissez la bonne methode pour transtiper ,
ou des fonctions send/recv differentes qui me permettront de faire ce
que je veux, je suis preneur !
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 15 mars 2005 à 05:02
Salut,
Le troisieme param est la taille des données, or avec le strlen((char*) &MesDonnees) tu retournes simplement la taille de la chaine Chaine de ta structure.
Il faut plutot passer sizeof(struct TStruct) en troisieme param.
smoove5198
Messages postés25Date d'inscriptiondimanche 26 octobre 2003StatutMembreDernière intervention13 septembre 2005 15 mars 2005 à 11:51
!!! merci aardman :)
Mon erreur etait un peu idiote je m'en rend compte :s J'avais
pensé que strlen () retourne un nombre de char, et donc, un nombre
d'octets*2 ... dans cette optique sizeof () ne donnerai pas la bonne
valeur selon moi :x
Enfin c bon , avec sizeof ca marche , merci encore !
smoove5198
Messages postés25Date d'inscriptiondimanche 26 octobre 2003StatutMembreDernière intervention13 septembre 2005 16 mars 2005 à 22:52
Oui Matt67, aardman a raison, (char*)(&MesDonnees) ce n'est
que du transtypage , c'est a dire qu'on tranforme la structure en une
chaine de caractere ( chaine --> char*).
Mais le compilateur ne comprend pas (char*) MesDonnees , il s'attend a
ce que MesDonnees soit un pointeur, donc on met le & devant pour
qu'il s'y retrouve ( c purement de la syntaxe je dirait , le resultat
est que l'on envoi quand meme la structure , et pas son adresse)