相关疑难解决方法(0)

通过recvfrom(UDP)接收一部分数据包

我正试图通过recvfrom接收一部分数据包.它实际上是这样的:

recvfrom(sockfd, serialised_meta, 12, flags, src_addr, addrlen);
recvfrom(sockfd, serialised_buf, BUFLEN, flags, src_addr, addrlen);
Run Code Online (Sandbox Code Playgroud)

数据发送方式如下:

 bufd->Serialise(serialised_buf, BUFLEN+12);
 sendto(sockfd, serialised_buf, BUFLEN+12, flags, dest_addr, addrlen);
Run Code Online (Sandbox Code Playgroud)

因此,我们的想法是先读取一些元数据,然后决定是否接收其他内容.问题是如果第二个缓冲区(serialised_buf),我在开始时收到4'/ 0'字节.它似乎不是序列化问题,我以前使用过序列化,而且一切都很酷,而我一次收到整个数据包(元数据和数据).关于如何修复它的任何想法?

PS.我知道我可以跳过不必要的字节)但无论如何,为什么它可能会发生?

c c++ sockets linux udp

5
推荐指数
1
解决办法
5951
查看次数

标签 统计

c ×1

c++ ×1

linux ×1

sockets ×1

udp ×1