NS2 学习笔记(一)

1、NS为什么要用使用分裂对象模型
在模拟的过程中,模拟器要完成两种不同的事情:一、要完成对具体协议的模拟,需要的是一种高效的系统编程语言,实现的算法要能够多次重复的执行,因此运行的效率很重要;二、需要经常设置或者修改模拟场景,需要在较短的时间内开发出大量的场景,从修改模型到重新运行的这段周转时间就很重要。因此选择了C++和OTCL,C++的运行效率比较高,但是修改后需要重新编译等,需要花费较大的时间,因此C++适合具体的协议的实现。OTCL是解释性的语言,运行速度比较慢,但是可以很方便的进行修改,不需要编译,也不是强制类型的,不容易出错。适合做模拟的配置!

2、OTCL和C++的对应关系
NS通过TCLCL把两种语言联系起来,OTCL类称为解释类,相应的C++类称为影像类或者编译类,相应的称OTCL对象为解释对象,C++对象为影像对象或者编译对象。

TCLCL是通过TclObject类和TclClass类来实现的。首先,用户通过解释器来创建解释对象,同时通过C++类产生相对应的影像对象。TclClass类中就包含这样的映象机制。TclClass是一个纯虚类,从这个类继承出来的类提供2个功能,1是构造和编译类互为镜像的解释类,2提供初始化新的TclObjec的方法。每个从TclClass中继承出来的类都和编译类结构中的一个TclObject子类想关联,并能初始化所关联类的新的对象。
如:
static class renotcpclass:public tclclass
{
public:
     renotcpclass():tclclass("agent/tcp/reno"){}//将 renotcpclass和   renotcpagent想关联,注意命名规则
     tclobject* creat(int argc, const char* const* argv[])
     {
               return(new renotcpagent());//经过上面的关联,每次创建agent/tcp/reno对象时,将都调用这个类的creat函数
      }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值