我正在用C开发客户端-服务器应用程序。
我想从客户端将结构作为字符数组发送,然后将字符数组转换回服务器端的结构。
我有以下结构
typedef struct mail{
char cc[30];
char bcc[30];
char body[30];
}
typedef struct msg_s{
int msgId;
mail mail_l;
}
我想将msg1发送到客户端。
unsigned char data[100];
struct msg_s msg1 ;
msg1.msgId=20;
// suppose the data in mail structure is already filled.
data = (unsigned char*)malloc(sizeof(msg1));
memcpy(data, &msg1, sizeof(msg1));
write(socketFd , data , sizeof(data));
当我在服务器端获取此数据时,如何将其转换回结构?
我想在C和Java语言中都这样做。
如果可能的话,请给我建议一些不错的文章来阅读有关此内容的文章,如果我不见了,请给我一个概念的名称。
最佳答案
我看到很多错误,
第一,
Character array declaration inside struct mail doesn't following the C convention
应该是这样
typedef struct mail{
char cc[30];
char bcc[30];
char body[30];
}
第二名
将
struct msg_s = msg1 ;
更改为struct msg_s msg1 ; // its a declaration of a struct msg1
第三名
unsigned char data[100];
在静态内存中分配100字节的内存。并且您正在再次通过
data = (unsigned char*)malloc(sizeof(msg1));
分配大小为struct msg1的动态内存[heap]。将
unsigned char data[100];
更改为unsigned char *data;
在客户端,
struct msg_s *inMsg ;
inMsg = malloc(sizeof(struct msg_s)); // malloc in c doesn't require typecasting
memcpy(inMsg ,data, sizeof(struct msg_s));
关于c - 将字节数组转换为c中的结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22603824/