如果机器A和机器B相互通信,但它们的主机字节顺序不同,那么在网络编程中,在发送端,tcp/udp数据字段应该转换为网络字节顺序吗?谢谢!
发布于 2013-03-22 17:48:12
除非您遵循预先存在的规范,否则始终使用网络字节顺序 (又名“大端”)是最安全的:
传统的反对观点是“世界上所有的一个VAX”(或者说今天的x86),它是一个小终端,所以网络字节顺序对数据征收了性能税。也许这在二三十年前是一个有效的论点,但今天肯定不是。您的处理器转换数据所需的时间是跨网络移动该数据所需时间的极小部分。
发布于 2013-03-22 20:41:44
当然,在许多情况下,这是推荐的。为了解释原因,让我们看一个例子:
如果上述示例中的发送主机发送号码1024,则该号码存储在发送主机的计算机上,为0x00000400。如果接收主机在接收这些字节时不更改字节顺序,并将0x00000400存储在内存中,则这将被解释为与1024完全不同的数字。十进制数1024的小末梢表示形式是0x00040000。在一台小终端机器上,0x00000400是小数262,144。
转换为网络字节顺序允许程序依赖于数据的标准编码,以避免混乱,就像我们在上面的例子中看到的那样。接收端的函数将从网络字节顺序转换为它所使用的任何字节顺序,这是容易获得和简单使用的。
发布于 2013-03-22 09:49:38
TCP内置了重新排序接收的数据包的机制.UDP没有,我不知道你所说的“不同的主机字节顺序”是什么意思,但是它接收数据包时有字节级的错误,那就是第二层角色来重新传输这样的数据包。
https://stackoverflow.com/questions/15553890
复制相似问题