我有一些将 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 服务器,其中数据以特定结构传输。