如何从套接字读取接收自定义数据类型?

2024-04-22

我想接收数据(自定义类型,例如 CMYType) 我有以下代码;

using namespace boost::asio;

streambuf receivedStreamBuffer;
streambuf::mutable_buffers_type bufs;
bufs = receivedStreamBuffer.prepare( sizeof(CMYType) );
std::size_t length = read( *m_pReciver->ConSocket(), 
                           buffer(bufs, sizeof(CMYType)),  
                           transfer_all(),
                           ec);

关于如何将 receiveStreamBuffer 转换为 CMYType 类型的对象有什么想法吗?!


您的代码“可以”实际工作。然而,作为克里斯托夫 https://stackoverflow.com/users/3723423/christophe指出,有许多问题需要考虑。

TCP/IP 编程

在您的评论中,您提到您是 TCP/IP 编程的新手。我建议你仔细阅读《Beej 网络编程指南》 http://beej.us/guide/bgnet/。这是一个简短的介绍(大约 20 页),内容不错,几乎涵盖了网络编程的所有方面,包括以下内容。这是非常值得花时间的,而且是免费的。

字节序

这是网络通信的普遍基本问题。你绝对need如果您无法控制软件运行的机器,请处理它。或者如果您想要可移植的代码。你可以跳过这个仅当您完全确定通信的两台(所有)计算机都具有相同的体系结构时。

如果您需要了解更多问题,these http://betterexplained.com/articles/understanding-big-and-little-endian-byte-order/ three https://en.wikipedia.org/wiki/Endianness websites https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Data/endian.html都是很好的起点。

序列化

序列化既是问题的概括,也是解决上述问题的“灵丹妙药”(如果应用正确)。基本思想是将数据类型(结构)转换为“串行流”,可以通过任何通道(网络)传输并转换回您的类型。升压有一个序列化库 http://www.boost.org/doc/libs/1_59_0/libs/serialization/doc/index.html可以用于此目的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从套接字读取接收自定义数据类型? 的相关文章

随机推荐

  • 在predict.lm()中使用聚类协方差矩阵

    我正在分析一个数据集 其中数据聚集在多个组 区域中的城镇 中 数据集如下所示 R gt df lt data frame x rnorm 10 y 3 rnorm x groups factor sample c 0 1 10 TRUE R
  • 如何调试 Heroku 请求超时错误

    我如何找出导致 heroku 上 h12 超时错误的原因 它在不同的页面 控制器上随机发生 这是我从日志中得到的错误 Processing by UsersController new as HTML 2013 08 15T13 08 54
  • 使用 script/api 更改组件服务 > COM 安全中的访问权限?

    是否有一个 api 可以更改 COM 安全的访问权限 我需要将新值写入 编辑限制 和 编辑默认值 这些是普通的注册表设置吗 找不到如何设置这些条目 快速答案是是 它们是注册表设置 长答案是否 它们不是simple注册表设置 这些值是二进制的
  • 确定线段是否与多边形相交

    如果我在 2D 平面上有一个向量 由 2 个点组成的线 我如何确定它是否穿过多边形 我知道我可以采用构成多边形的每条线并查看是否有相交 但有更好的方法吗 我读过这篇文章如何确定 2D 点是否在多边形内 https stackoverflow
  • 如何从 Swift 3 中的文本视图中删除查找和共享

    我可以使用它删除剪切 复制 粘贴 选择 选择所有内容 override public func canPerformAction action Selector withSender sender Any gt Bool if action
  • 在sqlalchemy中跨不同模块访问相同的db.session

    我对 sqlalchemy 非常陌生 正在尝试找出如何让事情变得更干净和连接 我创建了一个 model base py 文档 在其中创建了一个会话并在表中建立了所有实体 以及关系等 我想创建另一个模块 在其中对 base py 中的实体 表
  • 如果列数据重复,mysql 不会对行进行两次计数

    我正在计算名为 mysql 表的行数ptb profile views 我的桌子看起来像这样 id profile id viewed profile id date time 1 1 6 2 2 6 3 2 6 4 2 6 5 3 6 目
  • pygame初始化framebuffer或x服务器

    我有一个类检查合适的帧缓冲区 它工作得很好 一对计算机 主要是嵌入式旧板 没有帧缓冲区 所以我删除了init self 函数并手动将其设置为在 X 下运行 两种方式都可以在各自的系统上运行 我只是厌倦了每次进行更改时都将其移植 这是工作帧缓
  • 为什么括号会减慢我的 R 程序速度

    我在朋友的代码中发现了一些多余的括号 这确实减慢了执行时间 如果对此有什么解释的话 请查看这个示例代码 Python 也是一种 quesi 解释语言 不会受到此程序的影响 0 370 seconds x lt 0 while x lt 10
  • 尝试将我的应用程序添加到系统设置 -> 隐私和安全 -> 辅助功能列表是应用程序崩溃的原因

    我有一些应用程序 此应用程序必须具有辅助功能 才能使用全局热键 打开辅助功能首选项窗口没有问题 系统设置 gt 隐私和安全 gt 辅助功能 但用户必须手动单击 按钮 才能在硬盘上搜索我的应用程序并将我的应用程序手动添加到列表中 我正在尝试将
  • 为什么浏览器中的 http auth UI 如此糟糕?

    为什么没有注销按钮 为什么没有 您登录的网站 列表 是因为 HTTP 规范有问题吗 如果 Web 开发人员实际上可以依赖 HTTP 身份验证 那么他们的生活会容易得多 就 HTTP 而言 它是无国籍的 http www webopedia
  • 快速CRC算法?

    我想从 ASCII 字符串创建一个 32 位数字 CRC32 算法正是我正在寻找的 但我无法使用它 因为它需要的表太大了 它适用于资源非常稀有的嵌入式系统 那么 对于快速且精简的 CRC 算法有什么建议吗 当冲突的可能性比原始 CRC32
  • 如何在 SSIS 变量中存储“完全限定”和“仅名称”文件名

    我有一个 SSIS 包 其中有一个 Foreach 循环容器 加载静态文件夹中的所有 txt 文件 我将完全限定的文件名作为在连接字符串中使用的变量传递 我现在只需将文件名传递给一个变量以用于执行存储过程 问题是如果我将 Foreach 循
  • 刷新 Passport.js 中的令牌

    我如何在 Passport js 中执行此操作 当访问令牌过期时 您可以使用refresh token 刷新 您的访问权限 并获得另一个 access token 要使用 fresh token 您需要向我们的令牌端点发出 POST 请求
  • spring jndi NamingException:名称 [spring.liveBeansView.mbeanDomain] 未在此上下文中绑定

    我的 web 应用程序与 spring 3 2 4 运行良好 但是当我启动它时 我会得到调试信息 2014 05 20 11 11 47 DEBUG JndiTemplate 150 Looking up JNDI object with
  • 逐行读取文件而不是逐字读取文件

    我正在尝试编写一些代码来扫描输入文件中的回文 但它从每个单词而不是每行获取字符串 一个例子是赛车会显示为racecar 回文或太热而不能叫 回文 但相反它会显示为too 不是回文 hot 不是回文等等 这是我当前正在执行的读取文件的操作 F
  • 什么整数哈希函数可以接受整数哈希键?

    什么整数哈希函数可以接受整数哈希键 我发现以下算法提供了非常好的统计分布 每个输入位以大约 50 的概率影响每个输出位 不存在冲突 每个输入都会产生不同的输出 除非 CPU 没有内置整数乘法单元 否则该算法速度很快 C 代码 假设int是
  • 启动时出现速度错误“VM全局库.vm”

    我正在将 Velocity 与 Spring 一起使用 但在 Eclipse 控制台中我收到此错误 我的代码工作正常 但我想知道如何修复它 ResourceManager 无法在任何资源加载器中找到资源 VM global library
  • Android:连接和彩色阿拉伯字母

    我想显示已连接ANDandroid 视图 webview 或 textview 上的彩色阿拉伯字母 首先 我使用了没有颜色的 TextView 并且阿拉伯语显示正确 当我使用 spannableString 时 彩色字母与单词断开 其次 我
  • 如何从套接字读取接收自定义数据类型?

    我想接收数据 自定义类型 例如 CMYType 我有以下代码 using namespace boost asio streambuf receivedStreamBuffer streambuf mutable buffers type