我想通過UDP套接字發送我的結構。如何將c中的char []複製到我的結構中
結構數據包int seqnum; char data [BUFFERSIZE]; };因此,發件人
我
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((無效*)currentpkt,(無效*)的recv,字節)的接收器;我得到一個錯誤:
error: cannot convert to a pointer type
我在做什麼錯?有沒有更好的方式通過UDP套接字發送我的結構?
***** UPDATE *****
感謝大家的回答。最後我錯過了'&',但我的代碼現在看起來像這樣。
發件人:
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和發送的字節數過來。
什麼是'currentpkt'? – 2009-12-07 04:24:50
struct packet currentpkt; //全局變量 – 2009-12-07 04:28:52
問題#1:當不需要使用全局變量時,不要使用全局變量._ – 2009-12-07 04:30:47