原始套接字。 ip header何时使用hton

时间:2012-07-07 00:27:31

标签: c network-programming raw-sockets

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

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

由于

1 个答案:

答案 0 :(得分:1)

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

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