UDP를 통해 C 구조체를 보내고 있습니다.C에서 가변 길이의 UDP 패킷을 읽는 법
struct packet{
int numInt;
int* intList; //malloc'ed as (sizeof(int)*numInt)
}
[numInt][intList[0]]...[intList[numInt-1]]
으로 직렬화됩니다.
버퍼가 많은 바이트를 보유하지 않더라도 나의 이해는 UDP에서 recvfrom
를 호출하면 전체 패킷을 읽습니다. 내가 가진 유일한 옵션은 정말 큰 버퍼를 사용하고 있습니까?
표준은 다음과 같이 말합니다 : "메시지가 너무 길어서 제공된 버퍼에 맞지 않고 MSG_PEEK가 flags 인수에 설정되지 않은 경우 초과 바이트는 버려집니다 **. *" . 'SOCK_DGRAM'은 이와 관련하여'SOCK_STREAM'과 다릅니다. – cnicutar