摘要:
上面过程还有一个疑问:如何在command函数中向解释器传递执行结果?哈,这个用Tcl类可以解决。Tcl类封装了Otcl解释器的实例,并提供了访问解释器的方法。这个类提供了以下的操作方法:1、获得Tcl实例的引用2、通过解释器调用Otcl过程3、从解释器获取结果,或将结果传回给解释器4、存取、查找TclObject5、获得到解释器的直接访问。1、获得Tcl实例的引用当ns一开始运行,Tcl类即被实例化。Tcl类的一个静态成员变量“Tcl Tcl::instance_“用来保存该实例。这个Tcl对象就是Otcl解释器对象,可以通过获得它的引用来访问Otcl解释器的功能。获得此实例引用的语句为:T 阅读全文
摘要:
举个例子从整体说明Otcl和C++之间的对象连接机制1、在tcp.h中的TcpAgent类声明如下:class TcpAgent:public Agent {public:TcpAgent();virtual void recv(Packet*,Handle*);virtual void timeout (int ton);virtual void timeout_nonrtx (int ton);int command(int argc,const char*const* argv);virtual void sendmsg(int nbytes,const char *flags=0);… 阅读全文
摘要:
一、创建和销毁TclObject在Otcl脚本中使用new{}和delete{}。举个例子:set tcp1 [new Agent/TCP]delete $tcp1过程new{}的执行过程:1创建出解释对象2执行该对象的初始化实例过程init{},并把用户提供的参数传给它。3在基类SplitObject的初始化实例过程中,通过create-shadow方法创建该对象在C++中的影像对象。4影像对象的构造函数将被执行,其中会进行一些变量绑定工作。因此每个解释类都必须在初始化实例过程中调用其父类的初始化实例过程,以便最终执行到基类SplitObject的初始化实例过程去创建影像对象。创建影像对象的 阅读全文
摘要:
序 看了ns2一段时间,却发现今天看了的东西等过两天再看的时候又变得陌生,不得不又重头看起,如此循环,学习效率大大降低,于是乎想到把看过的知识都总结一下,以备日后查看快速上手。各位路过的朋友,如发现笔记中有欠妥的地方,请不啬赐教,鄙人感激不尽。 分裂对象模型:NS中的构件(构件库是一个层次结构)一般都是由相互关联的两个类来实现的,一个在c++中,一个在Otcl中。C++:实现构件的主要功能。Otcl的类:提供C++对象面向用户的接口。NS中使用分裂对象模型(Otcl和C++)的好处:C++:运行速度快,容易实现精确的、复杂的算法,用于具体协议的实现。Otcl:运行速度慢,但可以方便地修改,不是 阅读全文
摘要:
NS2中事件调度过程浅析最近研究NS2仿真工具,在学习源代码的过程中查看了一下NS2中的事件调度相关内容,对其流程有了一些粗浅认识,特分享如下。本人新手,以下内容有错误和不足之处恳请指教:)1. 事件调度相关类简介类结构如图1所示:图1 NS2事件调度相关类结构图重要类简介:1) Handler类: 定义位置:~\Common\Scheduler[.h .cc] 作用概述: NS2中用于执行对事件的处理动作(在handle()方法中实现); 作为Event类的属性,所有的事件都会保存用于处理自己的Handler,以供分派(dispatch)时使用; 属性/方法概述: publi... 阅读全文
摘要:
序很多人都问我新手应该看些什么资料,或者怎么熟悉NS2这个工具。这是让很多入门者非常头痛的问题,包括我自己,当初也是困难重重,不过现在让我说我也没什么印象了,因为我当时比较盲目看了很多兑现在一点儿用都没有的资料。为了能让写的东西真的对新手有所帮助,刚才跟我师弟crabhit谈了谈,所以总结了一下,希望能起到抛砖引玉的作用。当然,只是我们的粗略见解,如有不足,欢迎指正。SeaSon’email:yuhui.wu@163.comCrabhit’email:crabhit@gmail.com一. 安装(Cygwin+ns2.2*)这应该是让很多人头大的问题,因为NS2安装比较另类,所以很多人已如果安 阅读全文