Je fais de la programmation de socket en C, et j'essaie de résoudre des problèmes d'ordre d'octet. Ma requête (envoi) est correcte, mais lorsque je reçois des données, mes octets sont tous dans le désordre. Je commence par quelque chose comme ça :
char * aResponse= (char *)malloc(512);
int total = recv(sock, aResponse, 511, 0);
Lorsque je traite cette réponse, chaque mot de 16 bits semble avoir ses octets inversés (j'utilise UDP). J'ai essayé de corriger cela en faisant quelque chose comme ceci :
unsigned short * _netOrder= (unsigned short *)aResponse;
unsigned short * newhostOrder= (unsigned short *)malloc(total);
for (i = 0; i < total; ++i)
{
newhostOrder[i] = ntohs(_netOrder[i]);
}
Cela fonctionne correctement lorsque je traite les données comme un short, mais si je transforme le pointeur en char, les octets sont inversés. Qu'est-ce qui ne va pas ?