使用 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 序列化和发送对象 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定

随机推荐

  • 使用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制作的 基本上我想发送这样的消息 其中包含消息类型 正在发送的对象的类型 和数据本身 序列化对象 以及数据的大小