C++,通过UDP IPC接收SOCK_DGRAM,大小未知

问题描述 投票:0回答:1

我需要能够侦听 IPC UDP 套接字并接收大小未知的消息(在 C++ 中)。这些消息通过一些动态数组进行序列化 capnp。

recv(socket_fd, buff, buff_len, 0)

如何正确调整接收缓冲区的大小?

我可以检查队列中下一个数据包的消息大小并相应地调整缓冲区大小吗? 检查大小(毫秒或我们)的开销是否很大?

作为参考,我预计消息最大为 500Kb。

c++ udp recv
1个回答
0
投票

作为参考,我预计消息最大为 500Kb。

UDP 中的最大数据报负载大小为 65507 字节。如果您的应用程序协议有较大的消息,那么它需要某种方法将这些消息拆分为多个 UDP 数据报,并在重建消息时处理数据包丢失、重复和重新排序。

我可以检查队列中下一个数据包的消息大小并相应地调整缓冲区大小吗?

您可以简单地使用 64k 的缓冲区,因为数据报不能更大。

© www.soinside.com 2019 - 2024. All rights reserved.