ns2上的tcl脚本错误(无此类变量)

ns2上的tcl脚本错误(无此类变量),tcl,ns2,Tcl,Ns2,我尝试运行此处提供的示例代码: 根据自述文件,修补程序已成功应用,但在执行示例代码时,出现以下错误: ns: myTrace file3: can't read "dctcp_alpha_": no such variable while executing "subst $[subst $var]" (procedure "_o154" line 5) (Object next line 5) invoked from within "_o154 next dc

我尝试运行此处提供的示例代码:

根据自述文件,修补程序已成功应用,但在执行示例代码时,出现以下错误:

ns: myTrace file3: can't read "dctcp_alpha_": no such variable while executing "subst $[subst $var]" (procedure "_o154" line 5) (Object next line 5) invoked from within "_o154 next dctcp_alpha_" ("eval" body line 1) invoked from within "eval $self next $args" (procedure "_o154" line 18) (Agent set line 18) invoked from within "$tcp($i) set dctcp_alpha_" (procedure "myTrace" line 8) invoked from within "myTrace file3"
如何解决这个问题?

构建示例:tar xvf ns-allinone-2.35_gcc482.tar.gz

cd ns-allinone-2.35/ns-2.35/

patch-p1-忽略空白-i dctcp.patch

cd/

/安装

cd ns-2.35/

sudo制作安装

cp ns ns235 dctcp

sudo cp ns235 dctcp/usr/local/bin/

运行模拟:ns235 dctcp simpleDumbbell.tcl 。。将创建文件mytracefile.tr 2.1MB和thrfile.tr 10.2kB。和queue.tr:0B

您的错误:您可能使用了错误的执行程序

安全的方法是使用新名称复制DCTCP补丁“ns”

并且具有系统路径中的位置,如/usr/local/bin/ns235 dctcp

-
我曾经遇到过与你提到的完全相同的问题:

  ns: myTrace file3: can't read "dctcp_alpha_": no such variable 
           while executing
  st $[subst $var]"
       (procedure "_o154" line 5)
       (Object next line 5)
       invoked from within
    ...
1.问题是运行补丁后需要编译

正如他在回答中提到的,运行以下修补程序后:

cd ns-allinone-2.35/ns-2.35/

patch -p1 --ignore-whitespace -i dctcp.patch
您需要转到/ns-allinone-2.35/文件夹,然后进行编译:

cd ../

./install

cd ns-2.35/

sudo make install
不同于,我没有重命名另一个ns。我直接使用ns命令运行模拟:

ns simpleDumbbell.tcl

这对我很有用


希望这有帮助:

好吧,subst$[subst$var]是糟糕的代码,设置$var可能会更好,或者代码比我想象的更糟糕。但这可能无法解决问题。您是否编写了$tcp$i set dctcp_alpha_?您希望它做什么?非常感谢@DonalFellows的友好回复。我对tcl非常陌生,这是我一生中看到的第一个tcl代码,显然不是我写的,所以很不幸,我无法回答我期望$tcp$我设置dctcp_alpha_做的事情。代码如下: