在网络上的大多数示例中,作者通常会在发送数字之前将字节顺序从主机字节顺序更改为网络字节顺序。然后在接收端,作者通常将顺序从网络字节序恢复到主机字节序。
Q1:考虑到两个系统的架构是未知的,如果作者在颠倒字节顺序之前简单地检查机器的字节序,会不会更高效?
Q2:是否真的有必要将数字的字节顺序颠倒,即使它们被传递给同一机器架构并被同一机器架构接收?
最佳答案
一般情况下,你无法知道远程系统的架构。如果每个人都使用特定的字节顺序 - network byte order ,那么就没有混淆了。所有的逆转都有一些成本,但重新设计所有网络设备的成本会大得多。
A1:假设我们要尝试建立远程系统的字节顺序。我们需要在系统之间建立通信并确定远程系统的字节顺序。我们如何在不知道字节顺序的情况下进行通信?
A2:如果您知道两个系统具有相同的体系结构,那么不,您不需要在每一端反转字节。但一般来说,你不知道。如果你确实设计了一个这样的系统,那么你就做出了一个网络架构决策,在未来排除了不同的 CPU 架构。考虑 Apple 从 86k 切换到 PPC 再到 x86。
关于c - 通过网络发送数字时是否必须颠倒字节顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8172979/