gpt4 book ai didi

c++ - 哪种流适合通过 UDP 进行序列化?

转载 作者:太空宇宙 更新时间:2023-11-04 15:31:31 26 4
gpt4 key购买 nike

我正在尝试使用 Boost.Serialization 通过 UDP 序列化和恢复对象 Boost.Asio 图书馆。以下几点总结了我目前所知道的:

  • Boost.Serialization 的主要概念是归档。存档是表示序列化 C++ 对象的字节序列。
  • boost::archive::text_oarchive 类将数据序列化文本流boost::archive 类::text_iarchive 从这样的文本流中恢复数据。
  • 归档的构造器需要一个输入或输出流作为参数。该流用于序列化或恢复数据。

来源:https://theboostcpplibraries.com/boost.serialization-archive

我知道我必须将流作为参数传递给存档。但是,有几种不同类型的流是合适的候选者。见下图:

stream types

来源:https://stackoverflow.com/a/8116698/3599179

我看到在线序列化示例使用了 ostreamistream,其他示例使用了 ostringstreamistringstream 和其他一些人使用了 streambuf,如果我没记错的话,它既充当输入缓冲区又充当输出缓冲区。

(文件流不在考虑范围内,因为我需要从套接字而不是文件写入/读取。)

  • 上述每个流有哪些优势/劣势?
  • 考虑到我必须通过 UDP 发送序列化对象,这stream 是最佳人选?

最佳答案

花时间阅读您在 cppreference.com Input/output library 上提到的流的描述,很有启发意义。

如果你想序列化到内存中,只有一个流适合你:ostringstream。然后你从中提取字符串并发送它。对于反序列化,请使用 istringstream。或者,stringstream 用于这两种情况。

关于c++ - 哪种流适合通过 UDP 进行序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50947594/

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