2014-02-25 51 views
1

我有两个不同的系统,一个在32位机器上运行,另一个在64位机器上运行。这些系统上的软件是用C++编写的,并且在Linux上使用各自的GNU编译器进行编译。我已经定义了通信接口协议,但在交换数据时遇到了一些问题。系统通过以太网连接。为了确保系统通信没有任何问题,是否需要对数据类型进行一些修改?32位和64位系统之间的通信

由于

+6

这取决于你的协议是如何设计和实现的。数据的格式如何?没有更多的细节,你的问题是无法回答的。 – Jesper

+1

如果您的协议正确表示数据,这应该是可能的。因此可能是你的协议。 – dornhege

+2

'#include '并且构建您的协议是该文件中具有定义大小的类型,而不管基础平台如何。我认为两者之间的填充也可能不同,这也是值得注意的。 – Chad

回答

2

一般通过网络进行通信时,协议定义不仅数据的大小,而且字节序(参见htons和ntohs和方法,例如)。 一个简单的方法可能是使用Google协议缓冲区等数据序列化数据,这将使平台大小无关。

+0

我在网络上发送之前使用htons和ntohs。我会检查谷歌协议缓冲区,看看它是否可以帮助我 – Maverick

相关问题