运行 ns2 模拟器时出错:-无法读取 "ns_03":-没有这样的变量
Error while running ns2 Simulator:-Cant read "ns_03":-No such Variable
这是我在 UNIX 14.04 上的第一个 ns2 程序。
我正在尝试构建一个三节点点对点网络,它们之间具有双工链路。设置队列大小,改变带宽并找出丢弃的数据包数。
这是我的代码:-
**prgrm1.tcl**
set ns[new Simulator]
set nf[open prg1.nam w]
$ns namtrace-all $nf
set tf[open lab1.tr w]
$ns trace-all $tf
proc finish{} {
gobal ns nf tf
$ns flush-trace
close $nf
close $tf
exec nam prg1.nam &
exit 0
}
set n0[$ns node]
set n1[$ns node]
set n2[$ns mode]
set n3[$ns node]
$ns duplex-link $n0 $n2 200Mb 10ms DropTail
$ns duplex-link $n1 $n2 100Mb 5ms DropTail
$ns duplex-link $n2 $n3 1Mb 1000ms DropTail
$ns queue-limit $n0 $n2 10
$ns queue-limit $n1 $n2 10
set udp0[new Agent/UDP]
$ns attach-agent $n0 $udp0
set cbr0[new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $n1 $udp1
set cbr1[new Application/Traffic/CBR]
$cbr1 attach-agent $udp1
set upd2[new Agent/UDP]
$ns attach-agent $n2 $udp2
set cbr2[new Application/Traffic/CBR]
$cbr2 attach-agent $udp2
set null0[new Agent/Null]
$ns attach-agent $n3 $null0
$ns connect $udp0 $null0
$ns connect $udp1 $null0
$ns at 0.1 "$cbr0 start"
$ns at 0.2 "$cbr1 start"
$ns at 1.0 "finish"
$ns run
lab1.awk
BEGIN{
c=0;
}
{
if(=="d")
{
c++;
printf("%s\t%s\n",,);
}
}
END{
printf("The no of packets dropped = %d\n",c);
}
错误
can't read "ns_o3": no such variable
while executing
"set ns[new Simulator]"
(file "prg1.tcl" line 1)
您的错误是由程序的第 1 行引起的:
set ns[new Simulator]
您在变量名 ns
和命令 [new Simulator]
之间缺少一个 space
看起来像[new Simulator]
returns _o3
,所以解释器要运行这个命令:
set ns_o3
只有一个参数的 Tcl set
命令将 return 给定变量名的值。在这种情况下,没有名为 ns_o3
的变量,所以这是你的错误。
您的程序的其余部分在 []
括号中的命令之前也缺少 spaces。你为什么这样做?
这是我在 UNIX 14.04 上的第一个 ns2 程序。 我正在尝试构建一个三节点点对点网络,它们之间具有双工链路。设置队列大小,改变带宽并找出丢弃的数据包数。
这是我的代码:-
**prgrm1.tcl**
set ns[new Simulator]
set nf[open prg1.nam w]
$ns namtrace-all $nf
set tf[open lab1.tr w]
$ns trace-all $tf
proc finish{} {
gobal ns nf tf
$ns flush-trace
close $nf
close $tf
exec nam prg1.nam &
exit 0
}
set n0[$ns node]
set n1[$ns node]
set n2[$ns mode]
set n3[$ns node]
$ns duplex-link $n0 $n2 200Mb 10ms DropTail
$ns duplex-link $n1 $n2 100Mb 5ms DropTail
$ns duplex-link $n2 $n3 1Mb 1000ms DropTail
$ns queue-limit $n0 $n2 10
$ns queue-limit $n1 $n2 10
set udp0[new Agent/UDP]
$ns attach-agent $n0 $udp0
set cbr0[new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $n1 $udp1
set cbr1[new Application/Traffic/CBR]
$cbr1 attach-agent $udp1
set upd2[new Agent/UDP]
$ns attach-agent $n2 $udp2
set cbr2[new Application/Traffic/CBR]
$cbr2 attach-agent $udp2
set null0[new Agent/Null]
$ns attach-agent $n3 $null0
$ns connect $udp0 $null0
$ns connect $udp1 $null0
$ns at 0.1 "$cbr0 start"
$ns at 0.2 "$cbr1 start"
$ns at 1.0 "finish"
$ns run
lab1.awk
BEGIN{
c=0;
}
{
if(=="d")
{
c++;
printf("%s\t%s\n",,);
}
}
END{
printf("The no of packets dropped = %d\n",c);
}
错误
can't read "ns_o3": no such variable
while executing
"set ns[new Simulator]"
(file "prg1.tcl" line 1)
您的错误是由程序的第 1 行引起的:
set ns[new Simulator]
您在变量名 ns
和命令 [new Simulator]
看起来像[new Simulator]
returns _o3
,所以解释器要运行这个命令:
set ns_o3
只有一个参数的 Tcl set
命令将 return 给定变量名的值。在这种情况下,没有名为 ns_o3
的变量,所以这是你的错误。
您的程序的其余部分在 []
括号中的命令之前也缺少 spaces。你为什么这样做?