C - 原始套接字.何时使用 HTON 的 IP 标头



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

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

谢谢

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

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

最新更新