我希望能够通过UDP传输不同大小的数据,要发送的数据大小是不固定的。我有以下场景:
在上述示例中,接收方不知道要接收多少字节。我曾考虑先发送要接收的字节数,然后再发送数据。但是在这种情况下,如果数据包到达顺序错乱,我不知道会发生什么。
发送方应该是:
收件方将是:
unsigned char buffer[BUFFERSIZE];
int bytes = fill_buffer(buffer, sizeof(buffer)): // Returns number of filled bytes.
sendto(socket, buffer, bytes, 0, (struct sockaddr *)&server, sizeof(server))
在上述示例中,接收方不知道要接收多少字节。我曾考虑先发送要接收的字节数,然后再发送数据。但是在这种情况下,如果数据包到达顺序错乱,我不知道会发生什么。
发送方应该是:
sendto(socket, &bytes, sizeof(bytes), 0, (struct sockaddr *)&server, sizeof(server))
sendto(socket, buffer, bytes, 0, (struct sockaddr *)&server, sizeof(server))
收件方将是:
recvfrom(socket, &bytes, sizeof(bytes), 0, NULL, NULL)
recvfrom(socket, buffer, bytes, 0, NULL, NULL)
但是数据是否可能出现乱序?