Bonjour, voilà j'ai besoin d'envoyer une structure dans un paquet udp :
typedef struct {
unsigned short TransactionId;
short Flags;
short Questions;
short AnswerRRs;
short AuthorityRRs;
short AdditionalRRs;
char Separator;
char *Name;
short Type;
short Class;
} DNSQUERY;
donc je l'ai mis avec une union pour essayer de la 'transformer' en chars, puis d'envoyer les chars par le socket, mais il envoie un peu n'importe quoi. En affichant les chars, on s'aperçoit ke c'est en effet du nimporte quoi.
union {
char *Char;
DNSQUERY Struct;
} QueryPacket;
QueryPacket.Struct.TransactionId = 0x0080;
QueryPacket.Struct.Flags = 0x0001;
QueryPacket.Struct.Questions = 0x0001;
QueryPacket.Struct.AnswerRRs = 0x0000;
QueryPacket.Struct.AuthorityRRs = 0x0000;
QueryPacket.Struct.AdditionalRRs = 0x0000;
QueryPacket.Struct.Separator = 0x04;
strncpy(sName, "test.com", 63);
QueryPacket.Struct.Name = sName;
QueryPacket.Struct.Type = 0x0001;
QueryPacket.Struct.Class = 0x0001;
for (i = 0 ; i <= sizeof(QueryPacket.Struct)-1 ; i++) {
printf("%.2x", QueryPacket.Char[i], QueryPacket.Char[i]);
if ((i+1) % 8) { printf(" "); } else { printf("\n"); }
}
----------
ça affiche :
67 00 73 00 5c 00 41 00
6c 00 6c 00 20 00 55 00
73 00 65 00 72 00 73 00
j'ai du loupé quelque chose ;o
donc si kkun voit quoi ou a kkch d'autre a proposer ça serait cool
merci d'avance :)