UDP ソケット経由で構造体を送信しようとしています。
struct パケット { 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((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 にキャストしてバイトを送信できるのは素晴らしいことです。