NS使用了两种语言:C++和Otcl。
之所以使用两种语言是因为在不同的情况下,模拟器要做的事情不同。
一、具体协议的详细模拟和实现需要一种系统编程语言,这种语言要能够支持多种数据结构,而且往往要不停地重复执行。所以这种情况下,用C++语言,它的执行速度比较快,容易实现复杂的算法。适合具体协议的实现。
二、模拟器还需要经常设置网络环境和修改模拟场景,要在短时间内开发大量的场景。所以在这种情况下,用Otcl语言,它的运行速度虽然比较慢,但是可以方便地进行修改,不需要编译,不容易出错。适合做模拟配置。
所以一般规则是:
Otcl用于:模拟场景的建立、配置和模拟中只需要运行一次的程序;通过Otcl脚本操作已存在的C++对象。
C++用于:对一个数据流的每个分组进行处理的任何工作;修改已存在的C++类的行为时。
bw:Otcl是在Tcl基础上作了一个面向对象的封装。即在Tcl中加入类、实例、继承等面向对象的概念。
Otcl和C++两种语言中的对象和变量,通过TclCL来联系起来.