Probleme Argument void* d'une fonction

Résolu
Signaler
Messages postés
163
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
3 février 2012
-
Messages postés
163
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
3 février 2012
-
Bonjour,
Pour info je travaille sous Linux en C++

j'ai une fonction definie comme ca :


int ServeurSocket::emmetreSocket(void* trame, int taille)
{
 return sendto(Service, trame, taille, 0, (struct sockaddr*)&SockClient, sizeof(SockClient));
}



J'appelle la fonction comme ceci :


SS->emmetreSocket(&(Essai)E1, sizeof(E1));



Et la Structure Essai est declare comme ca :


typedef struct
{
  AnsiString S1;
  int I1;
}Essai;



Mon probleme :
J'aimerais envoyer par le Reseau la structure Essai mais je ne veux pas que la fonction se limite juste a une structure particuliere alors c'est pour ca que j'ai mis un void* que je caste en appelant la fonction.
Bien entendu quand je le teste ca ne marche pas.

Si quelqu'un aurait une idée merci de m'en faire part.

Merci. Et bon Code a tous. ++ Nexus

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.

4 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
SS->emmetreSocket(&E1, sizeof(E1));

=> le type void* permet de passer un pointeur sur n'importe quoi (un char, un int, une structure...)

par contre dans ta structure il y a une variable du type AnsiString. Si cette varaiable contient un pointeur (ce que je suppose vu que c'est une string). l'envoyer telle quelle va poser un problème car seul le pointeur sera envoyé et pas le contenu de la chaîne.
Messages postés
163
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
3 février 2012

Merci de ta reponse, effectivement l'AnsiString posait problème en l'enlevant le int dans la structure a été très bien recu par le client.
L'AnsiString était la juste pour un test. Dans la vrai structure j'utilise juste des int des floats et des doubles.

Merci. ++ Nexus

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
AnsiString , c'est pas du Borland ça?

et tu as un compilo de Borland sous X?

ça fait ptet newbe comme qu mais je n'ai pas encore exploré cette voie

en tt cas; il me semble que les STL fonctionne tres bien sous linux.

pourquoi utiliser ces types spécifique à un éditeur?

Magicalement.
Messages postés
163
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
3 février 2012

Salut Nono effectivement AnsiStirng c'est du Borland et plus precisement pour Linux c'ets du Kylix




Merci. ++ Nexus

Chaque problème a sa solution. S'il n'y a pas de solution c'est qu'il n'y a pas de problème.