c - 通过网络发送数字时是否必须颠倒字节顺序?

标签 c

在网络上的大多数示例中,作者通常会在发送数字之前将字节顺序从主机字节顺序更改为网络字节顺序。然后在接收端,作者通常将顺序从网络字节序恢复到主机字节序。

Q1:考虑到两个系统的架构是未知的,如果作者在颠倒字节顺序之前简单地检查机器的字节序,会不会更高效?

Q2:是否真的有必要将数字的字节顺序颠倒,即使它们被传递给同一机器架构并被同一机器架构接收?

最佳答案

一般情况下,你无法知道远程系统的架构。如果每个人都使用特定的字节顺序 - network byte order ,那么就没有混淆了。所有的逆转都有一些成本,但重新设计所有网络设备的成本会大得多。

A1:假设我们要尝试建立远程系统的字节顺序。我们需要在系统之间建立通信并确定远程系统的字节顺序。我们如何在不知道字节顺序的情况下进行通信?

A2:如果您知道两个系统具有相同的体系结构,那么不,您不需要在每一端反转字节。但一般来说,你不知道。如果你确实设计了一个这样的系统,那么你就做出了一个网络架构决策,在未来排除了不同的 CPU 架构。考虑 Apple 从 86k 切换到 PPC 再到 x86。

关于c - 通过网络发送数字时是否必须颠倒字节顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8172979/

相关文章:

c - 为什么我在 sbrk 之后会遇到无效内存?

c - 运算符优先级背后的逻辑

C 语言 - 如何确保在读取多个输入文件时保持恒定格式?

C 编程 : Reading data from a file, 动态分配内存,将内容放入结构体数组中

c - 即使 GPIO FD 发生变化,轮询也不会返回

c - uintptr_t 太小,无法存储地址

c - 错误 : case label does not reduce to an integer constant when using character data type

c - 是否可以使用用户输入设置常量?

c - linux C 串行结构缓冲区

C 从同名的不同文件中执行函数