如果传入long类型,32位客户端如何与64位服务器通信?

问题描述 投票:0回答:2

我们有一个在 32 位 Windows 7 上运行的 32 位 C++ GUI 应用程序。我们计划将带有 C++ 应用程序的服务器迁移到 64 位 Linux。 我们注意到长类型在 64 位中更大。 这与从 64 位传递到 32 位的客户端-服务器消息不兼容。 有什么好的方法可以解决这个不兼容的问题呢?我们需要更改代码吗?如何?或者我们是否使用第三方软件进行转换?这是什么软件?

c++ 64-bit 32bit-64bit 32-bit
2个回答
3
投票

这就是为什么有标准化的

int32_t
uint32_t
类型等
,所以你可以根据你的需要专门选择类型。

在您发送的所有结构中将所有

long
类型替换为
int32_t
可能需要大量工作,特别是如果它是一个大项目,但您(希望)只需要做一次。解决这个问题的另一种方法是将数据序列化为文本格式,然后在接收端反序列化它,这有一个很大的优点,它将使通信几乎完全独立于平台。


0
投票

此外,类型

long
在 Windows64 中仍然是 32 位长(与 64 位长的类型
WPARAM
LPARAM
void *
ptrdiff_t
size_t
intptr_t
uintptr_t
)不同).

详细信息请参见:https://en.wikipedia.org/wiki/64-bit_computing#64-bit_data_models

© www.soinside.com 2019 - 2024. All rights reserved.