UDP 소켓을 통해 구조체를 보내려고합니다.C에서 char []을 struct에 복사하는 방법
struct packet { int seqnum; char 데이터 [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);
이 그 숯불 []에 복사 내 구조체. 수신기
I은 를 memcpy ((무효 *) currentpkt (무효 *) RECV 바이트)와 수신기
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);
그러나있다;
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);
}
수신기 : 우리는 단지 문자로 캐스팅 바이트를 보내 수있는 그것의 좋은 것을 C에서
bytes = recvfrom(sockfd, (char *) ¤tpkt, bytes, 0,
(struct sockaddr *) &client, &clientSize);
.
'currentpkt'란 무엇입니까? –
struct packet currentpkt; // 전역 변수 –
문제 # 1 : _ 전역 변수를 사용할 필요가 없을 때 전역 변수를 사용하지 마십시오 ._ –