如果网络上所有机器都使用小端序,我是否应该转换为网络字节顺序(hton*)?

3

我正在编写一个客户端服务器应用程序,使用UDP在两台Intel x64计算机之间发送数据报。我控制双方的硬件,并验证它们都使用相同的小端架构。

既然我确认了两台计算机都是小端,那么在发送数据之前是否使用hton*函数改变字节顺序会带来任何优势?这肯定会造成非常微小的性能下降,并且没有任何好处吧?


1
一个字节序修复在一个通过网络传输数据的应用程序中不可能成为性能瓶颈。这是另一个级别的过早优化。我想不出任何理由不使用 hton 在它被设计的上下文中。如果你谈论的是你的数据,而不是库API参数,你可以逃脱这个问题,但除非你测量并且证明这是一个严重的问题,否则为什么要费心呢? - WhozCraig
2
不使用hton的问题在于它使您的代码对其他系统的可移植性降低。我实际上在一个地方工作,前任做出了一些假设,认为某些代码将始终使用大端字节序,并且该代码仅用于特定目的 - 这两者现在都不再成立,我们正在为此付出沉重的代价。 - HardcoreHenry
1个回答

1
您的协议可能会被用于您未预料到的方式。例如,程序可能会被在ARM或Sun系统上运行的某人拾取。
由于通过网络发送的值通常应该是网络字节序,因此最好在发送之前转换您的值。对性能的任何影响都将是微不足道的,并且将被认为是过早优化。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接