私は C でいくつかのソケット プログラミングを行っており、バイト オーダーの問題に取り組んでいます。リクエスト (送信) は問題ありませんが、データを受信するとバイトがすべて乱れます。私は次のようなことから始めます:
char * aResponse= (char *)malloc(512);
int total = recv(sock, aResponse, 511, 0);
この応答を処理するとき、各 16 ビット ワードのバイトが逆になっているようです (私は UDP を使用しています)。私は次のようなことをしてそれを修正しようとしました:
unsigned short * _netOrder= (unsigned short *)aResponse;
unsigned short * newhostOrder= (unsigned short *)malloc(total);
for (i = 0; i < total; ++i)
{
newhostOrder[i] = ntohs(_netOrder[i]);
}
これは、データを short として扱っている場合は正常に機能しますが、ポインターを char に再度キャストすると、バイトが逆になります。私は何を間違っていますか?