数据通过IP从32位计算机传输到64位计算机(反之亦然)。由于数据将以网络字节顺序传输,因此在传输过程中不会出现问题。 问题:数据到达接收端时会出现问题吗? 如果有任何问题,应该注意什么,以避免任何问题?
答案 0 :(得分:0)
不是问题......数据通常以字节形式存储(和传输),其大小通常为8位,并且不依赖于体系结构是32位还是64位。
系统规范的“32位”或“64位”部分通常指两件事:地址的大小(用于指向存储器的指针)和寄存器的大小(用于CPU计算) 。这对实际数据没有影响,无论是存储在磁盘上还是通过网络发送。
答案 1 :(得分:0)
在你所谈论的抽象层面上,应该没有问题。 32 vs 64不会影响套接字级别的网络通信。
答案 2 :(得分:0)
我认为前两位回答者已经误解了这个问题。 OP的评论表明他们正在将long
从LP64系统转移到ILP32系统,可能都是x86。
在LP64 x86系统上,long
基元类型是64位宽,最低有效字节优先。在ILP32 x86系统上,相同的long
基本类型是32位宽,最低有效字节优先。
如果您使用long
数据类型进行天真编码并来回传输数字,则会出现问题。您可能正在x86_64开发PC上进行调试,一切似乎都可以工作(有了memcpy()所有内容)并且它在i386系统上以神秘的方式打破,因为您试图将8个字节压缩成4个字节{{1 }}
这就是为什么long
被引入C99标准库的原因。它允许您通过为整数指定精确宽度来编写更多可移植代码。如果需要64位宽的无符号整数,请使用stdint.h
。此类型在ILP32和LP64 x86系统中不变。同样,如果您想要一个32位宽的有符号整数,请使用uint64_t
。有关该主题的更多信息,请参阅维基百科上的this文章。