《NS与网络模拟》第五章node示例

《NS与网络模拟》第五章node章节最后有一示例,可是语句解释的不是很全面,G了下,有篇博文 http://blog.chinaunix.net/u2/82448/showart_1360762.html解释的较为详细,但输出的结果却没有 ,为了看得清楚些并能更好的理解相关语句,特将此示例修改如下:
set ns [new Simulator] ;#建立一个Simulator对象的实例并把它赋值给变量ns。
set node [$ns node] ;#新建一个节点并赋值给node。
set udp0 [new Agent/UDP] ;  #新建一个UDP Agent并赋值给udp0。
set udp1 [new Agent/UDP] ;#新建一个UDP Agent并赋值给udp1。
set null [new Agent/Null] ;#新建一个UDP Agent并赋值给null。
$ns attach-agent $node $udp0 ;##将UDP Agent udp0绑定到node上。
puts "===============输出各对象的值================"
puts "ns的值:$ns"
puts "node的值:$node"
puts "udp0的值:$udp0"
puts "udp1的值:$udp1"
puts "null的值:$null"
puts "============================================="
puts "号码为0的slot对应的对象名: [[$node set dmux_] slot 0]" ;
  #查询号码为0的slot对应的对象名并将其输出。
puts "udp0的值: $udp0" ;#输出udp0的值。
puts "udp0所在的slot号码: [[$node set dmux_] findslot $udp0]" ;
  #查询udp0所在的slot号码并输出。
puts "查询null所在的slot号码(若没有则输出-1):[[$node set dmux_] findslot $null]" ;
  #查询null所在的slot号码,表中没有找到该对象(当前null没有加入),返回-1,并输出。
puts "查询udp1所在的slot号码(若没有则输出-1):[[$node set dmux_] findslot $udp1]" ;

puts "============================================="
puts "插入一个指向udp1的表项......\n其表项的slot号码=[[$node set dmux_] installNext $udp1]";
#在最后一个slot 0后插入一个新的指向对象udp1的表项,并返回该表项的slot号码、输出。
puts "查询号码为1的slot对应的对象名:[[$node set dmux_] slot 1]" ;
#查询号码为1的slot对应的对象名并将其输出。
puts "udp1的值:$udp1" ;#输出udp1的值。

puts "============================================="
puts "将号码为0的slot所指向的对象设为udp1(slot0原本指向udp0)......"
[$node set dmux_] install 0 $udp1 ;
#将号码为0的slot所指向的对象设为udp1(slot0原本指向udp0)。
puts "查询号码为0的slot对应的对象名:[[$node set dmux_] slot 0]" ;
#查询号码为0的slot对应的对象名并将其输出。
puts "udp1的值:$udp1" ;#输出udp1的值。
puts "查询号码为1的slot对应的对象名:[[$node set dmux_] slot 1]" ;

puts "============================================="
puts "寻找空闲的slot:[[$node set dmux_] alloc-port $null]" ;
#寻找一个空闲的slot并输出。
puts "将号码为0的slot清空......"
[$node set dmux_] clear 0 ;# 将号码为0的slot清空。
puts "udp1的值:$udp1 (说明slot清空对指向的对象没影响)" ;#输出udp1的值。
puts "寻找空闲的slot:[[$node set dmux_] alloc-port $null]" ;
#寻找一个空闲的slot并输出。

puts "============================================="
#puts "[[$node set dmux_ ] slot 0 ]" ;
#上面的一行命令:查询号码为0的slot对应的对象名,
#由于slot 0被clear,故会返回错误信息,所以应该被注释掉!否则会有错误输出。
$ns run
 
运行后输出为:
$ ns example5.tcl
===============输出各对象的值================
ns的值:_o3
node的值:_o10
udp0的值:_o13
udp1的值:_o14
null的值:_o15
=============================================
号码为0的slot对应的对象名: _o13
udp0的值: _o13
udp0所在的slot号码: 0
查询null所在的slot号码(若没有则输出-1):-1
查询udp1所在的slot号码(若没有则输出-1):-1
=============================================
插入一个指向udp1的表项......
其表项的slot号码=1
查询号码为1的slot对应的对象名:_o14
udp1的值:_o14
=============================================
将号码为0的slot所指向的对象设为udp1(slot0原本指向udp0)......
查询号码为0的slot对应的对象名:_o14
udp1的值:_o14
查询号码为1的slot对应的对象名:_o14
=============================================
寻找空闲的slot:2
将号码为0的slot清空......
udp1的值:_o14 (说明slot清空对指向的对象没影响)
寻找空闲的slot:0
=============================================
 
Classifier类提供了一些Tcl实例过程,用户可以在Tcl中对Classifier对象进行控制。主要实例过程:
  1. alloc-port :寻找一个空闲的slot。
  2. clear :将号码为index的slot清空。
  3. installNext:在最后一个slot后插入一个新的指向object的表项,并返回该表项的slot号码:如果object为空,会返回错误信息。
  4. slot :产旬号码为index的slot对应对象名,如果该slot为空,会返回错误信息。
  5. findslot:查询一个object所在的slot号码,如果该object为空,会返回错误信息,如果在表中没有找到该object,会返回-1。
  6. install :将号码为index的slot所指向的对象设为object。
 
按书上的解释,命令$node set dmux_ 返回$node的PortClassifier对象,可此TCL语句在NS源码中却没有找到,是如何返回的就不得而知啦!

你可能感兴趣的:(职场,node,示例,休闲,《NS与网络模拟》)