这是我的问题,其中一个rcvfrom()参数是一个char *,一旦我从中获得了数据,我想将它转换为结构体。但是,演员阵容不成功。我究竟做错了什么?是否可以将char *转换为结构?
这里是我做过什么:
struct {
int8_t seq;
int8_t ack;
bool flag;
char data[payload];
}r_pckt;
//...bunch of codes
char *buf = NULL;
buf = (char *)malloc (sizeof(char) * MTU);
memset(buf, 0, MTU);
//...
res = recvfrom(socket_fd, buf, MTU, 0,(struct sockaddr *) &cli_addr, (socklen_t *)&cli_len);
//..
r_pckt *tmp_pckt = (struct r_pckt *) &buf;
而且这是行不通的。有任何想法吗? 谢谢。
谢谢我摆脱了错误。但是现在我正在做一个printf来查看我是否可以访问内部字段。我这样做: printf(“Incoming =%s \ n”,tmp_pckt.payload);和我有一个错误说:请求成员'有效载荷'的东西不是一个结构或工会 – fabricemarcelin 2011-03-30 20:23:23
我明白了。我需要做tmp_pckt->有效载荷:) – fabricemarcelin 2011-03-30 20:28:18