C winapi, envoi structure contenant char*
Résolu/Fermé
Winapi
-
29 juin 2010 à 14:56
Char Snipeur Messages postés 9696 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 9696 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*
- Programmer envoi sms - Guide
- Dans la table des matières de ce document, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Envoi impossible messenger ✓ - Forum Facebook Messenger
- Votre envoi est trié sur sa plateforme de départ. ✓ - Forum Consommation & Internet
- Char ** - Forum C
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
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
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
9696
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 297
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^^