动态调整大小的boost :: asio :: buffer

orl*_*rlp 7 c++ buffer dynamic boost-asio

我读的boost::asio::ip::udp::socket是这样的:

using boost::asio::ip::udp;

// ...

char recv_buf[128];
udp::endpoint sender_endpoint;
size_t len = socket.receive_from(boost::asio::buffer(recv_buf), sender_endpoint);
Run Code Online (Sandbox Code Playgroud)

现在,这完全正常,但我能够接收到的最大字符数现在是127.但是我遇到了一个问题,因为我需要接受一些数据输入,其长度可以大大改变(并且不是很好 - 带有前缀标题的定义长度,例如).对此的解决方案是动态扩展缓冲区,如向量.是否有可能创建一个动态扩展boost::asio::buffer以接受(理论上)infite量的输入并将其存储在容器中?

Cub*_*bbi 5

UDP数据报大小并没有太大变化:它永远不会大于65535,在8字节头之后留出65,527字节数据的空间.

  • +1 你完全正确!我仍然对动态 `boost::asio::buffer` 感兴趣,不是因为 64KiB 太大,而是动态缓冲区通常看起来更合适,并且可以在 TCP 中重用。 (2认同)