ns2中AODV协议HDR_CMN(p)的含义
来源:互联网 发布:网络玄幻小说书名大全 编辑:程序博客网 时间:2024/04/29 20:05
刚开始看AODV协议就被两个函数难到:HDR_CMN(p)和HDR_IP(p),经查功能都差不多,以HDR_CMN(p)为例说明。
代码:
struct hdr_cmn *ch =HDR_CMN(p);
结构体hdr_cmn的定义在:/ns-allinone-2.34/ns-2.34/common/packet.h,570行。
HDR_CMN(p)实际上是一个宏命令,在packet.h的53行:
#defineHDR_CMN(p)
hdr_cmn::access(p)的定义在packet.h的619行能找到:
inline static hdr_cmn*access(const Packet* p) {
这里实际上是调用的类Packet的access(offset_)函数,该函数的定义在484行:
inline unsigned char*access(int off) const {
而bits_是packet类的成员变量,代表包头数据,实际上是一个无符号字符串的起始指针,定义如下:
unsigned char*bits_;
因此,&bits_[off]就好理解了,它应该是相对于包头off个字节地址偏移之后的指针。
这样看来,HDR_CMN(p)执行的结果应该是将包头数据偏移offset_个字节之后的指针强制转换成hdr_cmn*类型之后返回,offset_在结构体hdr_cmn中定义。
而同样的,HDR_IP(p)返回的也是packet中的偏移offset_字节的指针,只不过强制转换成了hdr_ip*类型,同时偏移量offset_在结构体hdr_ip中定义,与HDR_CMN(p)不同。
综上所述,HDR_CMN(p)和HDR_IP(p)实际上都是返回的数据包中的数据指针,只不过偏移量不同而已,其实就是因为这两个结构体中的数据位于数据包的不同段,通过不同的偏移量取出。
- ns2中AODV协议HDR_CMN(p)的含义
- ns2中aodv协议中路由链表的操作
- NS2中AODV协议混杂模式配置
- NS2中DSDV, AODV, DSR协议评估
- 基于NS2的网络路由协议仿真(AODV、COPE+AODV)
- ns2--AODV协议分析
- ns2,AODV协议解析
- 对ns2中aodv源文件的浅析
- NS2下AODV协议aodv.cc注释
- NS2下AODV协议aodv.cc注释
- NS2下AODV协议aodv.cc注释
- NS2中基于AODV协议实现的请求洪泛攻击
- NS2中基于AODV协议的请求洪泛攻击防御
- 在NS2 AODV协议中添加blackhole attacker(黑洞攻击)
- ns2下完善基于AODV的TDMA协议
- NS2仿真中AODV和AOMDV的问题
- NS2下AODV协议aodv.cc源码分析
- NS2 学习笔记—— AODV协议
- ns2编程小技巧(转)
- (转)ns2代码(int agrc,const cha…
- (转)使用GDB调试NS2程序
- ns2中基本变量类型定义
- ns2中结构体定义
- ns2中AODV协议HDR_CMN(p)的含义
- eclipse安装aptana3之后无代码提示…
- 暑假社会实践报告
- 暑假实践活动报告
- MP算法和OMP算法及其思想
- 分享10条Visual Studio 2012的开发使用技巧
- The Hound of the Baskervilles——5、Sir Henry Baskerville
- time表示“时间”的时候是单数
- H264关于RTP协议的实现