9 votes

Ordre des octets avec un grand tableau de caractères en C

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 ?

0voto

Vijay Points 472

Pour un seul octet, nous pouvons ne pas nous soucier de l'ordre des octets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X