在不同平台上通过管道传输数据的最佳和安全方式
Best and safe way to transfer data over a pipe on different platform
目前我正面临一个问题,我正在通过管道从x64 arch到x86 arch传递缓冲区对象。该对象还包含一些指针值,在x64中为8字节,而在x86中相同的指针大小为4字节。现在,当我通过管道传输对象时,它的大小比x86平台期望的相同对象多一点(因为这里的指针大小更小)。我可以从类似的帖子在这个论坛上理解,我可能需要使用序列化,但我不知道如何,因为我从来没有使用过序列化之前。序列化能解决这个问题吗?我使用c++与GCC编译器。我希望该产品可以在所有arch (ia64, x64或x86)上工作。
指针是指向本地运行程序的内存位置的地址*。将它发送给另一个程序是无用的,对于运行在另一台机器上的程序更是无用的,如果另一台机器的体系结构不同,则更是无用的。
在你的上下文中使用序列化意味着发送指针所指向的内容,而不是发送无意义的指针本身。
要实现跨架构数据发送,更简单的方法是使用文本进行数据传输。大多数(如果不是全部的话)广泛使用的跨架构协议使用文本:HTTP, IMAP, IRC…
*:我用program
代替process
boost序列化是专门为:
顺便说一下,使用POD结构,并确保使用特定类型的数据类型。为此,请使用预定义类型(例如,请看这里)在这里,我们使用术语"序列化"来表示可逆将任意一组c++数据结构解构为a字节序列。这样的系统可以用来重建一个另一个程序上下文中的等效结构。取决于上下文,这可能使用实现对象持久化,远程参数传递或其他功能。在这个系统中,我们使用术语"archive"来引用该字节流的特定呈现。它可以是二进制数据、文本数据、XML或其他文件由该库的用户创建。
http://code.google.com/apis/protocolbuffers/
协议缓冲区是Google用于序列化结构化数据的与语言无关、与平台无关的可扩展机制——想想XML,但更小、更快、更简单。你定义了你想要的数据结构,然后你可以使用特殊生成的源代码来轻松地从各种数据流中读写你的结构化数据,并使用各种语言——Java、c++或Python。
适用于x86/64,手臂
- 在c代码之间共享数据的最佳方式
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 将线程中的数据存储到全局容器的最佳方法?
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?
- 在 c++ 中解析数据包数据的最佳方法是什么?
- 使用 QT C++过滤大数据的最佳方式
- 在wxWidgets的事件中包含我自己的数据的最佳方法是什么?
- 用于筛子的最佳数据结构是什么(即一些被划掉的数字列表)?
- 用于存储分组关系和支持外观的最佳数据结构
- 适用于频繁更改的大型数据集的最佳数据结构
- 将数据从一个应用程序单向发送到另一个应用程序的最佳做法
- 点遍历的最佳数据结构
- 使用 jsoncpp 时从 JSon 剥离私有数据的最佳方法
- 代表软件包安装和系统依赖关系的最佳数据结构
- 在 c++ 中,在线程之间共享数据容器的最佳方法是什么?
- 组织从内存读取的数据的最佳方法(用于调试)c++
- 数字序列的最佳数据结构 [0:9]
- 什么是在C 中存储结果INT*的最佳数据类型
- 我的数据结构的最佳序列化方法
- 存储数据列表并自动分配给结构的最佳方法是什么