我正在尝试通过 UDP 套接字发送我的结构。
结构数据包 { int seqnum; 字符数据[缓冲区大小];};
所以在我的发件人上
bytes = sizeof(packet);
char sending[bytes];
bzero(sending, bytes);
memcpy((void *) sending, (void *) &packet, sizeof(bytes));
bytes = sendto(sockfd, sending, sizeof(sending), 0,
(struct sockaddr *) &client, clientSize);
所以我希望将我的结构复制到 Char[] 中。
在接收器上我有
int bytes;
bytes = sizeof(struct Packet);
char recv[bytes];
bytes = recvfrom(sockfd, recv, bytes, 0,
(struct sockaddr *) &client, &clientSize);
memcpy((void *) currentpkt, (void *) recv, bytes);
但是在接收器上使用memcpy((void *) currentpkt, (void *) recv, bytes); 我收到一个错误:
错误:无法转换为指针类型
我究竟做错了什么?有没有更好的方法通过 UDP 套接字发送我的结构?
***** 更新 *****
谢谢大家的回答。最后我错过了'&',但我的代码现在看起来像这样。
发件人:
void udt_send(struct Packet packet) {
int bytes;
bytes = sendto(sockfd, (char *) &packet, sizeof(packet), 0,
(struct sockaddr *) &client, clientSize);
}
接收者:
bytes = recvfrom(sockfd, (char *) ¤tpkt, bytes, 0,
(struct sockaddr *) &client, &clientSize);
在 C 中,我们可以将其转换为 char 并发送字节,这很好。