begin process at 2012 05 28 21:24:23
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Envoi de classe avec send


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

Envoi de classe avec send

mercredi 16 juillet 2003 à 19:26:21 | Envoi de classe avec send

piemur2000

Bonjour,

Je voudrai envoyer une classe grace à un send.
Par exemple cette classe :


class Donnees
{

int Type;
int Taille;
double **Donnees;

public:
Donnees();
virtual ~Donnees();
...
};


Si je fais :
Donnees *data = new Donnees;
send(sock, (char*)data,sizeof(data), 0);


Je ne recupere rien avec le recv.

Quelqu'un peu m'expliquer pourkoi? Ou alors me donner un exemple d'envoi d'autre chose qu'un char*.

Merci
jeudi 17 juillet 2003 à 01:06:31 | Re : Envoi de classe avec send

Anacr0x

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

-------------------------------
Réponse au message :
-------------------------------

> Bonjour,
>
> Je voudrai envoyer une classe grace à un send.
> Par exemple cette classe :
>
>

> class Donnees
> {
>
> int Type;
> int Taille;
> double **Donnees;
>
> public:
> Donnees();
> virtual ~Donnees();
> ...
> };
>

>
> Si je fais :
>
Donnees *data = new Donnees;
> send(sock, (char*)data,sizeof(data), 0);
>

>
> Je ne recupere rien avec le recv.
>
> Quelqu'un peu m'expliquer pourkoi? Ou alors me donner un exemple d'envoi d'autre chose qu'un char*.
>
> Merci
jeudi 17 juillet 2003 à 10:43:43 | Re : Envoi de classe avec send

piemur2000

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*...



-------------------------------
Réponse au message :
-------------------------------

> 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
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour,
> >
> > Je voudrai envoyer une classe grace à un send.
> > Par exemple cette classe :
> >
> >

> > class Donnees
> > {
> >
> > int Type;
> > int Taille;
> > double **Donnees;
> >
> > public:
> > Donnees();
> > virtual ~Donnees();
> > ...
> > };
> >

> >
> > Si je fais :
> >
Donnees *data = new Donnees;
> > send(sock, (char*)data,sizeof(data), 0);
> >

> >
> > Je ne recupere rien avec le recv.
> >
> > Quelqu'un peu m'expliquer pourkoi? Ou alors me donner un exemple d'envoi d'autre chose qu'un char*.
> >
> > Merci
>
jeudi 17 juillet 2003 à 11:35:27 | Re : Envoi de classe avec send

Kaid

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.

Kaid - kaid.fr.st

-------------------------------
Réponse au message :
-------------------------------

> Bonjour,
>
> Je voudrai envoyer une classe grace à un send.
> Par exemple cette classe :
>
>

> class Donnees
> {
>
> int Type;
> int Taille;
> double **Donnees;
>
> public:
> Donnees();
> virtual ~Donnees();
> ...
> };
>

>
> Si je fais :
>
Donnees *data = new Donnees;
> send(sock, (char*)data,sizeof(data), 0);
>

>
> Je ne recupere rien avec le recv.
>
> Quelqu'un peu m'expliquer pourkoi? Ou alors me donner un exemple d'envoi d'autre chose qu'un char*.
>
> Merci
jeudi 17 juillet 2003 à 11:42:13 | Re : Envoi de classe avec send

piemur2000

Ok j'veu bien mais tu peu expliquer comment faire?



-------------------------------
Réponse au message :
-------------------------------

> 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.
>
> Kaid - kaid.fr.st
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour,
> >
> > Je voudrai envoyer une classe grace à un send.
> > Par exemple cette classe :
> >
> >

> > class Donnees
> > {
> >
> > int Type;
> > int Taille;
> > double **Donnees;
> >
> > public:
> > Donnees();
> > virtual ~Donnees();
> > ...
> > };
> >

> >
> > Si je fais :
> >
Donnees *data = new Donnees;
> > send(sock, (char*)data,sizeof(data), 0);
> >

> >
> > Je ne recupere rien avec le recv.
> >
> > Quelqu'un peu m'expliquer pourkoi? Ou alors me donner un exemple d'envoi d'autre chose qu'un char*.
> >
> > Merci
>
jeudi 17 juillet 2003 à 11:46:52 | Re : Envoi de classe avec send

Kaid

Regardes ces deux sources de vieuxLion sur la sérialisation en MFC, c'est la méthode la plus simple.

LA SÉRIALISATION MFC ACCESSIBLE EN MODE CONSOLE !!!

LA SÉRIALISATION AVEC VC++6 [MFC] COMPRENDRE ET METTRE EN OEUVRE


Kaid - kaid.fr.st

-------------------------------
Réponse au message :
-------------------------------

> Ok j'veu bien mais tu peu expliquer comment faire?
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > 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.
> >
> > Kaid - kaid.fr.st
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjour,
> > >
> > > Je voudrai envoyer une classe grace à un send.
> > > Par exemple cette classe :
> > >
> > >

> > > class Donnees
> > > {
> > >
> > > int Type;
> > > int Taille;
> > > double **Donnees;
> > >
> > > public:
> > > Donnees();
> > > virtual ~Donnees();
> > > ...
> > > };
> > >

> > >
> > > Si je fais :
> > >
Donnees *data = new Donnees;
> > > send(sock, (char*)data,sizeof(data), 0);
> > >

> > >
> > > Je ne recupere rien avec le recv.
> > >
> > > Quelqu'un peu m'expliquer pourkoi? Ou alors me donner un exemple d'envoi d'autre chose qu'un char*.
> > >
> > > Merci
> >
>
jeudi 17 juillet 2003 à 18:40:41 | Re : Envoi de classe avec send

piemur2000

Ok merci, j'ai juste une autre petite question :
recv c'est une instruction bloquante non? tant qu'il n'a rien recu il attend?



-------------------------------
Réponse au message :
-------------------------------

> Regardes ces deux sources de vieuxLion sur la sérialisation en MFC, c'est la méthode la plus simple.
>
> LA SÉRIALISATION MFC ACCESSIBLE EN MODE CONSOLE !!!
>
> LA SÉRIALISATION AVEC VC++6 [MFC] COMPRENDRE ET METTRE EN OEUVRE
>
>
> Kaid - kaid.fr.st
>
jeudi 17 juillet 2003 à 18:47:27 | Re : Envoi de classe avec send

Kaid

Oui.

Kaid - kaid.fr.st

-------------------------------
Réponse au message :
-------------------------------

> Ok merci, j'ai juste une autre petite question :
> recv c'est une instruction bloquante non? tant qu'il n'a rien recu il attend?
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Regardes ces deux sources de vieuxLion sur la sérialisation en MFC, c'est la méthode la plus simple.
> >
> > LA SÉRIALISATION MFC ACCESSIBLE EN MODE CONSOLE !!!
> >
> > LA SÉRIALISATION AVEC VC++6 [MFC] COMPRENDRE ET METTRE EN OEUVRE
> >
> >
> > Kaid - kaid.fr.st
> >
>


Cette discussion est classée dans : donnees, code, send, envoi, classe


Répondre à ce message

Sujets en rapport avec ce message

pourkoi pointeur vers classe ? [ par Arkko ] Quelquun peut m'expliquer pourquoi ce code cree un pointeur NULL vers un classe et apres quil declare un variable de type cMyD3dApplication et met une Envoi/Reception de donnees binaires par socket en C [ par ravat485 ] Bonjour,je souhaite envoyer des donnees Binaires par socket en C,en consultant le forum pas trouve un exemple pour ca je serai ravi d'avoir votre aide pb envoi de donnée avec send() [ par misspj ] je fais une bataille navale en reseau et en fait j'ai un petit problème avec les fonctions send et recv pour envoyer la situation des bateau dans ma g Code C standard ou classe C++? [ par Stormy ] Quelle serait l'intérêt de (re)coder un code C en C++ ?Le fait de "transformer" les fonctions C traditionnelles en classes ajoute-t-il en pertinence?L CObject [ par ifren ] salutj'ai un petit probleme,bon j'ai une classe data qui herite de la classe CObject, jusque la normalj'ai un tel codeData::Data(): // Copie de l'obje Send qui n'envoi pas [ par CyberP ] J'utilise la commande send dans un programme. Apparemment, aucune erreur ne se déclanche et l'envoi est correct mais le serveur auquel je me suis conn opengl bug [ par darmoor ] Voila je vien de debuter dans l'openGL et selon le tutorial jai fait ce qu'il falai et sa me marque une erreur:le code:#include #includ [API][WIN32] Enregistrement de classe de fenêtre [ par Jeffray ] Bonjour,J'ai un problème pour enregistrer une classe de fenêtre.J'utilise GetClassInfoEx() pour extraire les infos de la classe EDIT créée par Windows classe cstring methode find [ par samia82 ] bonjour a tous,1.comment faire pour rechercher une chaine de caractere (CString chaine) dans un mot d'un tableau de CString nomme tab_donnees[n] avec Mélanger code managé et non managé [ par fred_82 ] Bonjour,Je souhaiterais mélangé du code managé et du code non managé mais je n'y arrive pas.pour avoir un classe non managé, il suffit pourtant de cré


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 2,746 sec (3)

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