在NS2中获取代理的属性

时间:2016-11-19 21:10:37

标签: tcl simulation ns2

我实际上需要在我的TCL脚本中知道我的UDP代理的属性(打印一些值并将其用于统计),这是我第一次使用这种脚本语言。我尝试使用命令 info ,但我没有使用它。

这是我的代码:

#Setup a UDP connection
set udp [new Agent/UDP]
puts [$udp info class] # Work and print "Agent/UDP"
puts [info class variables Agent/UDP] #Fail with the error  "Agent/UDP does not refer to an object"

我尝试过:

puts [info class variables udp] #Fail (same error) 
puts [info class variables $udp] #Error : _o87 does not refer to an object

没有更多结果。 你能告诉我我做错了什么以及如何获取我的Agent / UDP对象的属性。

1 个答案:

答案 0 :(得分:1)

问题在于有多个对象系统。 Agent/UDP是一个OTcl类,而info class是在TclOO类上运行的。 TclOO(从Tcl 8.6开始的标准对象系统)比OTcl更新,并且具有更多功能(它也更快)但是语法在细节上有点不同所以我们不期望ns-2到永远被移植过来。 (通过XOTcl从OTcl到TclOO有一个扭曲的遗产...但语法不是转换的事情之一,因为它更多来自另一个对象系统,[incr Tcl Tcl被“诅咒”了对象系统的瘟疫。)

OTcl的文档不是最容易找到的,但this page是有用的,equivalent for instances也是如此。特别是,它告诉我们可以通过info instproc(即方法)进行内省:

set udp [new Agent/UDP]
puts [$udp info vars]
puts [$udp info commands]