gpt4 book ai didi

c++ - boost 序列化: ensure data safety over socket transmition

转载 作者:行者123 更新时间:2023-11-30 02:50:24 26 4
gpt4 key购买 nike

我正在使用 boost 1.53 和序列化通过 TCP/IP 传输 520 个 float 的数组。我放了一个调试代码打印输出来查看要发送的数据量:大约 5 K。这里对我来说没问题,但这个值在某种程度上取决于要序列化的实际数据。可能是 5400、5500 等等。

问题是:接收这样的数据 block 的正确方法是什么?目前我使用 read_some() 调用。但正如我发现的那样,它并不能保证整个序列化的数据 block 都会被读出。我错了吗?

如何保证RX端会有完整的archive?当无法反序列化一大块数据时是否会抛出任何异常?

最佳答案

至于 tcpip 数据包可以接收到许多较小的数据包,所以我建议向 tcpip 添加一些额外的数据像这样:

  1. 将您的数据序列化以流式传输
  2. 获取流的大小
  3. 从流的大小开始发送到 tcpip 缓冲区,然后从流中发送数据

接收方读取大小,然后读取数据包的其余部分。

收到完整数据包后 - 调用反序列化

关于c++ - boost 序列化: ensure data safety over socket transmition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20472506/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com