ns-2与TCP拥塞模拟 之三 脚本语言OTcl



ns-2TCP拥塞模拟 之三 脚本语言OTcl

ns-2使用C++OTcl作为开发语言。底层的仿真引擎由C++编写,同时利用面向对象的OTcl语言作为仿真时命令和配置的接口语言。C++的特点:具有很快的运行速度,但每次改变均需要编译,较为复杂,适合处理烦琐但比较固定的工作。OTcl在运行速度上无法和C++比拟,但相对来说更加灵活,适合用来设计仿真方案。C++OTcl之间通过TclCL工具包实现互相调用。

ns-2的脚本使用了脚本语言OTclOTcl又称为Object Tcl,是在TclToolkitCommand Language,发音为“tickle”)的基础上做了一个面向对象的封装,是一种面向对象的脚本语言。结合注释,示例1的大部分语句都比较直观,易于理解。在此仅详细说明一下用来赋值的set命令。

set命令用来给变量赋值:set变量名变量值

注意:如果set命令后直接跟一个参数,则返回的是这个变量的值。


示例如下。

% set var1 a;#给变量var1赋值为a

a

% set var2 $var1 ;#var1的值赋给变量var2

a

% set var2 ;#返回变量var2的值

a

在这里,细心的读者可能会发现一个不同于示例1的地方,在注释符号“#”的前面还有一个“;”,这是怎么回事呢?

符号“#”的确是Tcl语言的注释符,不过要注意的是在一行语句的末尾,直接使用这个符号会造成一些错误。这是因为Tcl解析器总认为一条命令应该以换行或者分号结束,其他的在同一行中都认为是参数。

需要特别说明的是,在ns-2仿真中必须注意脚本中制表符号(Tab键)的使用,尤其是语句末尾多余的制表符,常常引发奇怪的错误。这里给出的一些示例,为了内容清晰使用了制表符,在实际使用中应该去除。

你可能感兴趣的:(tcp,Congestion,拥塞控制,ns-2)