日期:2014-05-16  浏览次数:20601 次

关于RAW套接口收到的数据报的IPv4的头部的字节顺序问题?
ipv4头部各字段应该是网络字节顺序(除了这三个外ip_len, ip_off, and ip_id ),但是书上程序怎么没有对字节顺序直接转换就使用呢:

ip = (struct ip *) ptr; // ptr为收到的数据报的起始地址
headerLen = ip->ip_hl << 2

我想应该把ip->ip_hl 转化一下字节顺序吧,ntohs(ip->ip_hl), 不知道我的理解是不是错的? 请大为大虾帮忙指出。 


------解决方案--------------------
因为就1个字节, 直接位运算得到相应的位即可。

如果是多字节,楼主说的没错,要ntohl/ntohs进行转换得到本地序才可以开始位运算。
------解决方案--------------------
探讨

收到的数据可以看是一个大字符串,而字符串可以不区分大小端,故收到的数据不必转换