ソケットを介してクライアントに送信する構造体があります。クライアントとサーバーの両方が同じアーキテクチャ上にあるため、エンディアンの問題はありません。int値を正しく受け取ります。しかし、char[]値を正しく受け取ることができません。これが構造です。
struct Packet {
int id;
int number;
char data[256];
};
サーバー側では、データをシリアル化してクライアントに書き込みます。
struct Packet *s = new Packet();
s->id= htonl(1000);
s->number= htonl(7788);
memcpy(s->data, "MESSAGE", 7);
n = write(NewSockFD , s ,sizeof(s) );
クライアント側では、データを逆シリアル化します。
n = read(SockFD , Buffer , sizeof(Buffer));
struct Packet *s = (struct Packet*)Buffer;
char b[256];
int i = ntohl(s->id);
int j = ntohl(s->number);
memcpy(b, s->data, sizeof(s));
idとnumberの値を正しく受け取ります。問題はデータ値にあります。私はここで何を間違っているのですか??..