我不确定为什么htons
和ntohs
都存在于标准库中。他们做同样的事情 - 除非我以某种方式感到困惑!
htonl
和ntohl
同样如此。
答案 0 :(得分:7)
他们制作自我记录的代码,告诉读者数据是以主机还是网络顺序。
答案 1 :(得分:6)
这是因为除了big-endian或little-endian之外,机器还有某种不寻常的endianness,它不是一个或多个简单的字节交换。
例如,如果值0x0A0B0C0D
在内部表示为0B 0C 0D 0A
,则将此表示传递给htonl
将返回0x0A0B0C0D
,但ntohl
将返回{ {1}}。
我不知道任何具有此类表示的平台,但主机到网络和网络到主机的单独功能的存在允许这种可能性。