C winapi, envoi structure contenant char*
Résolu/Fermé
Winapi
-
29 juin 2010 à 14:56
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 30 juin 2010 à 08:06
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 30 juin 2010 à 08:06
A voir également:
- C winapi, envoi structure contenant char*
- Logiciel calcul structure bois gratuit - Télécharger - Architecture & Déco
- Programmer envoi sms - Guide
- Mainlevée de l’envoi international ✓ - Forum Consommation & Internet
- Structure d'un rapport de stage - Guide
- Votre envoi est en préparation pour sa distribution - Forum Consommation & Internet
5 réponses
oui biensur désolé par socket^^ en faites je fais:
send(socket, (char*)&header, sizeof(BITMAPINFOHEADER), 0);
send(socket, (char*)&TailleImage, sizeof(int), 0);
send(socket, bitmap, TailleImage, 0);
j'aimerais juste remplir ma structure puis faire
send(socket, (char*)&TailleStructureAvecLeCharAlloue, sizeof(int), 0);
send(socjet, (char*)&structure, TailleStructureAvecLeCharAlloue, 0);
Voyez?^^
send(socket, (char*)&header, sizeof(BITMAPINFOHEADER), 0);
send(socket, (char*)&TailleImage, sizeof(int), 0);
send(socket, bitmap, TailleImage, 0);
j'aimerais juste remplir ma structure puis faire
send(socket, (char*)&TailleStructureAvecLeCharAlloue, sizeof(int), 0);
send(socjet, (char*)&structure, TailleStructureAvecLeCharAlloue, 0);
Voyez?^^
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
29 juin 2010 à 16:57
29 juin 2010 à 16:57
impossible de tout envoyer dans une structure si tu ne connais pas la taille à l'avance.
Send effectue une opération simple, il prend ton pointeur et envoi tout les octets jusqu'à atteindre la taille donnée. Si tu utilises une structure avec un pointeur, la mémoire n'est pas continue et donc send ne sera pas où chercher. Tu peux donc faire en deux envoie : l'en-tête et la taille de l'image.
Néanmoins, il existe peut être une solution. Je crois (à vérifier et tester) qu'il est possible de déclarer une structure de taille variable si le DERNIER argument est un tableau :
en tout cas, je me rappel d'une astuce comme ça.
Send effectue une opération simple, il prend ton pointeur et envoi tout les octets jusqu'à atteindre la taille donnée. Si tu utilises une structure avec un pointeur, la mémoire n'est pas continue et donc send ne sera pas où chercher. Tu peux donc faire en deux envoie : l'en-tête et la taille de l'image.
Néanmoins, il existe peut être une solution. Je crois (à vérifier et tester) qu'il est possible de déclarer une structure de taille variable si le DERNIER argument est un tableau :
struct conteneur { BITMAPINFOHEADER h; int TailleImage; char bitmap[]; }Ce n'est peut être pas très portable non plus... et je ne suis pas sur que tu puisse utiliser le sizeof (je pense même plutôt non). ensuite, tu fais :
send(socket,(&)conteneur,sizeof(BITMAPINFOHEADER)+sizeof(int)+TailleImage,0)
en tout cas, je me rappel d'une astuce comme ça.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
30 juin 2010 à 08:06
30 juin 2010 à 08:06
Une solution similaire approuvé par un utilisateur :
https://www.generation-nt.com/reponses/les-structures-a-taille-variables-sont-elles-portables-entraide-237264.html
Il y a portabilité aussi entre les différents windows et compilateur (et même entre version de compilateur) dès l'instant que tu fait quelque chose qui n'est pas standard, il peut y avoir des soucis de portabilité.
https://www.generation-nt.com/reponses/les-structures-a-taille-variables-sont-elles-portables-entraide-237264.html
Il y a portabilité aussi entre les différents windows et compilateur (et même entre version de compilateur) dès l'instant que tu fait quelque chose qui n'est pas standard, il peut y avoir des soucis de portabilité.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci
Ben c'est exactement ce que je souhaitais faire en faite mais j'avais un gros doute.
Je connais la taille a l'avance pas de soucis^^ et la portabilité, l'applu est only windows donc pas de problème non plus.
Après au niveau propreté quel est le mieux?
Je trouve pas ca très professionnel de devoir envoyer les trucs un par un en faites.
mais sinon merci je clos^^
Ben c'est exactement ce que je souhaitais faire en faite mais j'avais un gros doute.
Je connais la taille a l'avance pas de soucis^^ et la portabilité, l'applu est only windows donc pas de problème non plus.
Après au niveau propreté quel est le mieux?
Je trouve pas ca très professionnel de devoir envoyer les trucs un par un en faites.
mais sinon merci je clos^^