(转)关于Ping协议的添加
2013-05-06 15:37
211 查看
这个协议网上有很多资料,在这里就不贴源码了,我想说说我在编译过程中遇到的问题,整理整理思路。
首先,这个协议简单易懂,一个节点在设定的时间发包,接收结点收到后,计算rtt的值,并回传一个echo包给接收结点。最后rtt的值利用tcl.eval这个函数记录在out[]数组当中。
那么我在编译过程中,遇到了两个问题,首先是说off_ip_未定义。这个错误的解决方法是,先定义off_ip_。即:
int off_ip_=hdr_ip::offset();
第二个问题是说no match for 'operator >>' in ' hdrip->src_>> *(Address::instance().NodeShift_[1],...
查了很多资料,后来发现可能是因为版本原因,必须写成:hdrip->src_.addr_>> Address::instance().NodeShift_[1],
(Scheduler::instance().clock()-hdr->send_time) * 1000);
这样编译就通过了。
实际上,Ns2.29已经添加了Ping 协议。在/apps/文件夹中,大家可以直接写脚本测试。
最后转点关于send这个函数的问题吧,这也是我写协议的时候没明白的。
因为Agent/Ping 未定义send的OTCL method,故会通过cmd机制调用 PingAgent::command,参数
为"send"
// Send the packet
send(pkt, 0);
而send会通过父类Agent 关于send的实现为:
void send(Packet* p, Handler* h) { target_->recv(p, h); }
这时即调用子类PingAgent的recv函数。
在PingAgent的recv函数中,有一个tcl.eval(out)调用,此时,out的值即包含 recv,所以,最终会调用
测试脚本中添加的otcl 过程 recv.
不知明白否?其实,你跟踪一下代码流就可以知道整个流程,甚至是out的具体值了
首先,这个协议简单易懂,一个节点在设定的时间发包,接收结点收到后,计算rtt的值,并回传一个echo包给接收结点。最后rtt的值利用tcl.eval这个函数记录在out[]数组当中。
那么我在编译过程中,遇到了两个问题,首先是说off_ip_未定义。这个错误的解决方法是,先定义off_ip_。即:
int off_ip_=hdr_ip::offset();
第二个问题是说no match for 'operator >>' in ' hdrip->src_>> *(Address::instance().NodeShift_[1],...
查了很多资料,后来发现可能是因为版本原因,必须写成:hdrip->src_.addr_>> Address::instance().NodeShift_[1],
(Scheduler::instance().clock()-hdr->send_time) * 1000);
这样编译就通过了。
实际上,Ns2.29已经添加了Ping 协议。在/apps/文件夹中,大家可以直接写脚本测试。
最后转点关于send这个函数的问题吧,这也是我写协议的时候没明白的。
因为Agent/Ping 未定义send的OTCL method,故会通过cmd机制调用 PingAgent::command,参数
为"send"
// Send the packet
send(pkt, 0);
而send会通过父类Agent 关于send的实现为:
void send(Packet* p, Handler* h) { target_->recv(p, h); }
这时即调用子类PingAgent的recv函数。
在PingAgent的recv函数中,有一个tcl.eval(out)调用,此时,out的值即包含 recv,所以,最终会调用
测试脚本中添加的otcl 过程 recv.
不知明白否?其实,你跟踪一下代码流就可以知道整个流程,甚至是out的具体值了
相关文章推荐
- 向NS2中添加协议PING[转载]
- 【NS2】向ns中添加新的协议(ping协议)
- NS2中添加Ping协议
- 苹果改版之后,关于隐私协议添加的问题解决方案
- 向NS2中添加协议PING
- XMPP协议中关于whitespace ping的研究
- 关于RS485总线通信协议开发注意事项
- 关于eclipce添加离线adt 和sdk
- 关于mongoVue添加、导入数据
- 关于网络协议封装的一些新想法
- 没自带协议 Win7系统中如何添加IPX协议?
- 关于铁矿石现货价与协议价
- 关于FlexPaper 2.1.2版本 二次开发 Logo 、打印、搜索、缩略图、添加按钮、js交互、右键菜单等相关问题
- 关于802.11n协议在WEP、WPA-TKIP方式下仅支持54Mbps速率的说明
- 关于添加修改内容的模块化、对象化处理架构说明,以 bom 模块为例。(编号:20110704A0801)
- 关于VS2008里面的FormClosing事件内添加对话框后重复执行的问题
- 关于在easyui中添加tab的时候不能执行href页面中的js的说明
- 关于UITableView添加按钮后改变选…
- 关于java的一些小问题,list中添加对象,java基本数据类型对象
- 关于移动网关的私有代理协议:X-Online-Host