使用 boost 通过 TCP 序列化和发送对象

2023-12-11

我正在尝试通过 tcp 连接发送 C++ 对象:

  • 我的对象都是可序列化的,使用增强序列化。
  • TCP服务器/客户端是用boost asio制作的。

基本上我想发送这样的消息,其中包含消息类型(正在发送的对象的类型)和数据本身(序列化对象)以及数据的大小,以便我可以处理缓冲区(大小可以根据不同的情况而变化)相同类型的对象,因为它不是 POD)。

我有点卡住了,因为我不知道如何发送这个。我不明白将数据转换为字符缓冲区的步骤是什么,并在缓冲区的开头添加额外的信息(消息类型和大小),然后将此缓冲区提供给tcp连接的发送函数,所有这一切都需要尽可能少地复制。

Thanks.

-


Here您可以找到有关如何将 boost::serialization 与 boost::asio 一起使用的好示例。

像这样的东西是你所需要的核心:

std::ostringstream archive_stream;
boost::archive::text_oarchive archive(archive_stream);
archive << YOUR_DATA;
outbound_data_ = archive_stream.str();
boost::asio::async_write(socket_, boost::asio::buffer(outbound_data_), handler);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 boost 通过 TCP 序列化和发送对象 的相关文章

  • 计算 XML 中特定 XML 节点的数量

    请参阅此 XML
  • 如何在多线程C++ 17程序中交换两个指针?

    我有两个指针 pA 和 pB 它们指向两个大的哈希映射对象 当pB指向的哈希图完全更新后 我想交换pB和pA 在C 17中 如何快速且线程安全地交换它们 原子 我是 c 17 的新手 2个指针的原子无等待交换可以通过以下方式实现 inclu
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 函数参数的默认参数是否被视为该参数的初始值设定项?

    假设我有这样的函数声明 static const int R 0 static const int I 0 void f const int r R void g int i I 根据 dcl fct default 1 如果在参数声明中指
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • unordered_map 中字符串的 C++ 哈希函数

    看起来 C 标准库中没有字符串的哈希函数 这是真的 在任何 c 编译器上使用字符串作为 unordered map 中的键的工作示例是什么 C STL提供模板专业化 http en cppreference com w cpp string
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • 使用html5和php上传多个文件

    我有一个使用 HTML5 多重属性设置的文件上传表单 但是 该表单仍然只上传单个文件 我是否需要在 php 中创建某种循环函数 或者是否有其他方法可以做到这一点 这是我的代码 form
  • 为什么相同的日期有不同的时间?

    也许答案很明显 但我不明白 为什么代码片段中的日期不同 该格式是否也说明了有关时间的信息 console log 2017 1 9 gt console log new Date 2017 1 9 console log 2017 1 09
  • 如何获取加载的样式表的内容

    我想从页面头部链接的 css 文件中获取样式表规则 或 css textContent document styleSheets似乎适用于所有主流浏览器 但是styleSheets 0 cssRules当然在 IE 对于 IE 你可以使用r
  • 列表从索引中切片[重复]

    这个问题在这里已经有答案了 gt gt gt a a b c d e f g h l gt gt gt a 30 gt gt gt a 30 a b c d e f g h l 我试图理解这种切片背后的逻辑 例如 当我们尝试通过索引访问元素
  • Python中根据多个条件返回列的方法

    我有一个数据框如下 基于一些条件 我需要检索该列 Wifi User1 Wifi User2 Wifi User3 Thermostat Act User1 Act User2 Act User3 58 48 60 18 0 1 0 60
  • Webkit 和 Excel 文件(PHPexcel)

    我有一个可以下载的 excel 文件 例如 NAME xlsx 很好 它在 firefox 中工作 但在 webkit safari chrome 中它也附加到名称扩展名 xhtml那么它的名称将是 NAME xlsx html 它应该是仅
  • 如何创建数字选择器对话框?

    我希望能够创建一个对话框 允许用户从指定范围中选择一个数字 我知道现有的小部件 例如来自 Quietlycoding 的小部件和 SimonVT 的小部件 已经做到了这一点 但我很难将它们正确地集成到我的应用程序中 此外 这些主要是小部件
  • MySQL - 当嵌套选择使用该表时如何从表中删除?

    我正在尝试做这样的事情 DELETE FROM table 1 WHERE table 1 id IN SELECT table 1 id FROM table 1 table 2 table 3 WHERE table 1 id tabl
  • 像 xcode 一样批量优化 iphone/ipad 显示的 PNG

    我正在为 ipad 开发杂志查看器 但我在性能方面遇到了困难 我发现显示 png 最昂贵的部分是加载过程 我知道 xcode 能够在构建过程中优化 png 并且此类图像的加载速度要快得多 但我无法将所有图像都包含到构建中 因为它会很大 您知
  • Angular2 路由器中的生命周期挂钩

    在 angular2 路由器中添加生命周期挂钩时遇到问题 如果任何人都可以分享在 Angular2 路由器中添加生命周期挂钩的代码 那将会很有帮助 我了解了如何添加 可以激活 挂钩 感谢埃里克的帮助 与其他生命周期挂钩不同 CanActiv
  • WCF REST 错误 HTTP 307

    我有一个 REST WCF 服务 当尝试对此服务执行如下操作的 POST 时 我收到以下错误 OperationContract WebInvoke Method POST UriTemplate RequestFormat WebMess
  • 有没有一种干净的方法可以在 Spring Web API 中将字符串返回为 json?

    例如 我必须执行如下 RequestMapping value get string method RequestMethod GET public ResponseBody String getString return Hello Wo
  • Python <> 运算符是什么

    到底是什么 lt gt Python 中的运算符 为什么它没有文档记录 据我所知 是不是一样 or is not In Python 2 x lt gt 是相同的 i e 不等于 而不是is not这是 不等同于 但后者是首选 比较运算符
  • MySQL:要求 SSL 未显示在拨款中

    MySQL 8 不显示REQUIRE SSL in the SHOW GRANTS output 在 MariaDB 上 当我使用创建用户时REQUIRE SSL 它显示在补助金中 Server version 10 2 22 MariaD
  • 如何将 C# 数据表传递给 JavaScript 函数

    我在代码隐藏中有这些数据 并尝试以各种格式将其传递给 javascript 函数 列表数组 json 字符串 但无法通过 javascript var 对象获取数据 这是后面代码中最后一个数据格式 List
  • 如何阻止 Visual Studio“发布网站”发布我的 ReSharper 文件夹?

    这真的很烦人 因为它们不是该项目的一部分 我知道这确实很旧 但也许我的回复会对其他人有所帮助 我在这里找到了解决方案 http www meadow se wordpress p 137 基本上 将这些行添加到选项卡上方 Web 部署项目文
  • Windows 7 上的 XAMPP 上的 Kohana 3.2 错误:目录 APPPATH\cache 必须可写

    当我查看使用 Kohana 3 2 创建的网站时 会出现狂野的错误 Kohana Exception 0 目录 APPPATH cache 必须可写 我使用 Windows 7 和 XAMPP 但不知道该怎么做 因为目录 logs 是可写的
  • 数据框中列表列的极坐标交集

    import polars as pl df pl DataFrame a 1 2 3 8 9 4 b 2 3 4 4 5 6 所以给定数据帧 df a b 1 2 3 2 3 4 8 9 4 4 5 6 我想要一个c列 它是a和b的交集
  • 解决方案克隆发生在连续产生“新的最佳分数”的步骤中

    最近引起我注意的是 当产生 新的最佳成绩 时 步子比其他人慢 这绝对是在产生 新的最佳分数 的每一步中发生的解决方案克隆 因此 如果 新的最佳得分 步骤不是连续的 这也没关系 例如 如果我们连续执行 50 个步骤 则解决方案克隆过程将执行
  • 使用 boost 通过 TCP 序列化和发送对象

    我正在尝试通过 tcp 连接发送 C 对象 我的对象都是可序列化的 使用增强序列化 TCP服务器 客户端是用boost asio制作的 基本上我想发送这样的消息 其中包含消息类型 正在发送的对象的类型 和数据本身 序列化对象 以及数据的大小