1

我是原始套接字的新手,我正在玩 ip header。ip->ip_hl = sizeof(struct ip) >> 2 //works fine; 但是 我注意到 ip->ip_hl = hton(sizeof(struct ip) >> 2) //will not work;

我不明白的是,在这种情况下,为什么不将所有数字转换为网络顺序而不是主机顺序?判断何时使用网络顺序/主机顺序的一般规则是什么?

谢谢

4

1 回答 1

1

htons适用于 16 位值。htonl适用于 32 位值。至于hton(无后缀),我什至不确定是否存在。

报头长度只占用一个字节(实际上是一个字节的一部分)。您无需翻转任何字节即可将其转换为正确的形式。因此,没有类似htonshtonl用于 8 位值的宏。

于 2012-07-07T00:35:21.807 回答