UDP ソケットをサーバーに送信するコードがいくつかあります。現在、私はローカルで実行する別のサーバーコードを持っています。これは、送信されたものをすべて読み取り、受信したものを正確に書き戻します。
次に行う必要があるのは、構造体の送受信です。構造体は問題なく送信できますが、サーバーから受信するとマッシュアップされます。これが私のコードです:
typedef struct {
char first_part[4];
char second_part;
char third_part[2];
} Cloud;
次にmain
:
char reply[BUFLEN], message[BUFLEN];
Cloud data;
strcpy(data.first_part, "test");
data.second_part = 'a';
strcpy(data.third_part, "hi");
printf("Size:%d\n", sizeof(data));
//This part seems to work---
char* package;
package = (unsigned char*)malloc(sizeof(data));
memcpy(package, &data, sizeof(data));
printf("Size:%d\n", strlen(package));
strcpy(message, package);
udp_send_receive(message,reply);
//---So the message is sent, and the string received by the server is correct.
memcpy(package, message, strlen(message));
printf("Package: %s\n",package); //-This is also correct
memcpy(&data, package, sizeof(data));
printf(data.first_part); //--This is incorrect
ここで何がうまくいかないのか誰かが説明してくれたら本当にありがたいです。私はこの種のことについて少し経験がなく、データが特定の構造で転送される別のサーバーと通信する UDP サーバーを構築する任務を負っています。