我正在用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语言做同样的事情。
如果可能的话,请向我推荐一些关于此的好文章,以及如果我遗失的概念名称。
答案 0 :(得分:0)
我看到很多错误,
首先,
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
第3次
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));