NS2机制浅显分析

NS2机制浅显分析

ID:46284631

大小:78.00 KB

页数:7页

时间:2019-11-22

NS2机制浅显分析_第1页
NS2机制浅显分析_第2页
NS2机制浅显分析_第3页
NS2机制浅显分析_第4页
NS2机制浅显分析_第5页
资源描述:

《NS2机制浅显分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、NS2机制浅显分析[我在Z前看的是以ping协议为实例来理解TclCL机制和分裂对象模型]木文以channel实例的创建过程为例,试图说明ns2的分裂机制,请在阅读本文前阅读《TheNSManual有关分裂机制章节,由于篇幅有限,作者能力有限,木文章不能分析得非常彻底,时间仓促,有不当之处请大家给予批评指正。一、定义信道基类定义channel的C++类#ns-2.31macchannel.hclassChannel:publicTclObject{public:Channel(void);virtualintcommand(intargc

2、,constchar*const*argv);};定义用于连接的类#ns-2.31macchannel.ccstaticclassChannelClass:publicTclClass{public:ChannelClass():TclClass(”Channel"){}TclObject*create(int,constchar*const*){return(newChannel);}class_channel;[注意]一个类声明为static,那么当ns刚开始初始化的时候,便会调用该类的构造函数,当静态变量class_channel第

3、一次被创建时,ns将执行其构造函数,这就建立了适当的方法和解释类层次.具体解释请看第三节Otcl注册过程二、Otcl注册过程继续第一节,当ns初始化时会创建实体class_channel,它会调用类的构造函数ChannelClass():TclClass(”Channel”){}首先执行TclClass:TclClass(',Channer,),”Channel”会传给参数此classname..下面我们看一下TclClass()的具体实现//->tclcl-l.l9Tcl.ccTclClass*TclClass::all_;//[pro

4、blem]什么意思?在C++里TclClass::TclClass(constchar*classname):class_(0),classname_(classname){讦(Tcl::insUince().interp()!=NULL){#解释器已经存在,解释器是一个动态连接库的一部分bind();#变量绑定函数}else{voidTclClass::bind(){Tcl&tel=Tcl::instance();〃获取Tel句柄[参考1]tcLevalf(HSplitObjectregister%s",classname_);#$cl

5、assname_=="Channel”〃上句利用句柄调用otcl命令,在Otcl环境屮注册该类名:Channel该类的父类是SpliteObject//SpliteObject是一•个具有C++映像类的OTcl类,他是所有OTcl映像类的基类#注册了Z后,为这个类添加两个命令:create-shcidow和delete-shadow#调用命令就是TclClass::create_shadow(),TclClass::delete_shadow().class_=OTclGetClass(tcl.interp(),(char*)classn

6、ame_);//class_OTclAddIMethod(class_,ncreate-shadow,r,(Tcl_CmdProc*)create_shadovv,(ClientData)this,0);OTclAddIMethod(class_,"delete-shadow'*,(Tcl_CmdProc*)delete_shadow,(ClientData)this,0);otcl_mappings();}下边来讲讲我们在tel脚本里自己能控制的实例化过程四、实例化过程调用tel函然后当你在icl脚本中调用newChannel时,ns2

7、使用tclsh解释执行tel脚本,数new函数//tclcl-1.19/tcl-object.tcl146procnew{classNameargs}{seto[SplitObjectgetid]#得到一个新的分裂实体编号”_0和_0*冇类Splitobject的变量id标识,从_。0开始#可见在每一个Simulator对应的模拟中“_o*”标示唯一的一个分裂类实体,#也就是说,所冇的分裂类实体都冇自己的唯一标识,这个标识就是句柄#注意SplitObject与TclObject的关系if[catch"$classNamecreate$o$

8、args"msg]{#创建实体讦[stringmatch,,_FAILED_SHADOW_OBJECT_n$msg]{#如果创建影像类失败,删除o对象delete$oreturn}global

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。