iptton 发表于 2008-10-22 11:55

关于字节顺序

请教下,希望有实际经验的人回答。

字节顺序有big endian和little endian两种
相关的函数有:htons htonl(host to net short ,host to net long)
                        ntohs ntohl (net to host)

据我所看到的例程中,只有在传送地址和端口时调用了这些函数,而具体数据却没有
网上有两种说法: 一种说只要地址和端口转换一种说所有网络数据都要考虑转换。

我倾向于相信后者,
在具体设计中可以以确定的顺序(如:little-endian x86所用的顺序)进行传输,
然后数据接收方判断本身主机的字节顺序再判断是否转换。


某BLOG上说:有可能是在设置地址和端口后API会对之后传输的数据进行自动转换,个人不是很相信,但没办法找到big-endian的机器测试。


PS:突然想想网络字节顺序是定了的big-endian,也就是说只需要对big-endian进行特殊处理。



再PS:刚刚翻书,似乎这不是什么问题。。。大家路过吧..

[ 本帖最后由 iptton 于 2008-10-22 13:19 编辑 ]

fengogo 发表于 2008-10-27 19:32

感觉数据没必要进行转换. 本来是怎样的, 传输到另一边也怎样, 硬要将其转换只会破坏数据而且也未必适用.
路过.

x865512 发表于 2008-11-4 04:30

jinry 发表于 2008-11-6 00:47

和CPU相关的....
如果是x86的则是little endian的,数据都要经过转换的.不过对于做上层应用,甚至是上层的应用协议栈的人来说一般不需要关心这个,驱动层或者是OS适配层已经把这个做了...
页: [1]
查看完整版本: 关于字节顺序