begin process at 2012 05 30 12:24:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

WINSOCK : Envoi / Reception de structures


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

WINSOCK : Envoi / Reception de structures

mardi 15 mars 2005 à 03:52:08 | WINSOCK : Envoi / Reception de structures

smoove5198

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
// comprendre :)  )
SOCKET MonSocket;
TStruct      MesDonnees;
.....
send (MonSocket, (char*)&MesDonnees,strlen( (char*)&MesDonnees ), 0);

//*********************************************//

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 !

 merci d'avance :)



Smoove
mardi 15 mars 2005 à 05:02:32 | Re : WINSOCK : Envoi / Reception de structures

aardman

Membre Club
Réponse acceptée !
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.

mardi 15 mars 2005 à 11:51:34 | Re : WINSOCK : Envoi / Reception de structures

smoove5198

!!! 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 !

Smoove
mardi 15 mars 2005 à 20:21:41 | Re : WINSOCK : Envoi / Reception de structures

Matt67

Bonjour,

Juste une question :
send (MonSocket, (char*)&MesDonnees,sizeof(struct TStruct), 0);
tu envoies l'adresse de ta structure, mais si c'est deux postes differents  ???

Matt...
mardi 15 mars 2005 à 21:09:27 | Re : WINSOCK : Envoi / Reception de structures

aardman

Membre Club

Salut,
Matt67> ici on envoit pas l'adresse de la structure, mais son contenu.
je vois pas le probleme?

mercredi 16 mars 2005 à 22:52:45 | Re : WINSOCK : Envoi / Reception de structures

smoove5198

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)

En esperant avoir compris ta question ^^

Smoove
jeudi 17 mars 2005 à 06:42:02 | Re : WINSOCK : Envoi / Reception de structures

Matt67

Bonsoir,

Merci pour ces precisions.
Etant un peu comme St Thomas, j'ai verifié hier soir et exact ca marche.

Matt...
jeudi 17 mars 2005 à 06:42:20 | Re : WINSOCK : Envoi / Reception de structures

Matt67

Bonjour,

Merci pour ces precisions.
Etant un peu comme St Thomas, j'ai verifié hier soir et exact ca marche.

Bonne Journée,

Matt...


Cette discussion est classée dans : send, int, socket, char, fonctions


Répondre à ce message

Sujets en rapport avec ce message

Thread et socket besoin de conseil [ par kawito ] Salut,je desire realiser un client/serveur TCPle probleme est que les fonctions accept et recv sont bloquante.donc cela bloque l'affichage etc...mon p Hachage fermé problème de lecture [ par mcflysupersonic ] Bonjour je suis nouveau sur le forum est ceci est ma première question donc j'espère que je ne me suis pas trompé d'endroit pour poster.Voilà j'ai un fonctions en static [ par Xentor609 ] Salut,juste une petite question toute bête, mais quelqu'un pourraitm'expliquer exactement quel est l'interet de declarer une fonction en static (ex: s need help_API - debutant. [ par JimyRyan ] j'ai cree un progamme qui affiche une image (stoquee dans un fichier .bmp), et une phrase (lu a partir d'un fichier TXT), j'ai deux problemes : une fo convertion char* en int [ par sampq ] Je recupere à partir d'une requete sql un char* que je veux utiliser par la suite dans une boucle for de mon programme, mais la il faudrait que ça soi segmentation fault help [ par alabb ] aidez moi je suis un new bie, j'ai un segmentation fault a la fin du prog:si gagant apres avoir affiché WINNERsi perdant apres avoir affiché "votre s Tableau et char to int [ par Niníel ] Bonjour!J'ai un tableau: chTabStart[64] dans lequel je rentre un nombre dans le format suivant: d_25 pour un nombre décimale par exemple. Donc dans mo Pb de strcpy et de char tab[i][j] [ par fred23 ] Bonjour,J'ai ecrit les code suivant mais le strcpy ne me donne rien.Qui pourrais me dire pourquoi.?J'ai repéré la ligne avec une fleche.Merci pour vot Logiciels & librairies Microsoft: définitivement buggés ? [ par BenjZ ] Salut à tous, Je développe depuis 2 jours un petit logiciel de stéganographie tout bête: il code un fichier dans une bitmap sur les bits de poids faib char et int [ par ToToL ] Bonjour,Je voudrai faire une saisi a l'utilisateur et il faut k'il insert que des chiffres car apres je doit faire une operation avec ce chiffre et do


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales