簡體   English   中英

NS2 Tcl / Tk中的請求數據包生成代碼

[英]Request Packet Generation Code in NS2 Tcl/Tk

for {set i 0} {$i < $num_nodes} {incr i} {
   for {set j 0} {$j < 10} {incr j} {
     $ns at [expr 7.2+[expr rand()*3.0]] "$n($i) send_message 10 1 {[expr round([expr rand()*100000])]:[expr round([expr rand()*$numdata1])]:1:-1:-1} $MESSAGE_PORT"
     set generated1 [expr $generated1 + 1]
   }
}

我正在建立代碼,用於在tcl ns2中生成請求數據包。 我從互聯網上找到了這條線,但我聽不懂這條線:

$ns at [expr 7.2+[expr rand()*3.0]] "$n($i) send_message 10 1 {[expr round([expr rand()*100000])]:[expr round([expr rand()*$numdata1])]:1:-1:-1} $MESSAGE_PORT" 

請告訴我上述幾行背后的邏輯是什么?

首先,這是嵌套expr的錯誤使用。 清理:

 $ns at [expr {7.2+rand()*3.0}] "$n($i) send_message 10 1 {[expr {round(rand()*100000)}]:[expr {round(rand()*$numdata1)}]:1:-1:-1} $MESSAGE_PORT"

逐字查看:

  • $ns
  • at
  • [expr {7.2+rand()*3.0}]
    • 在7.2和10.2之間的隨機浮點值
  • "$n($i) send_message 10 1 {[expr {round(rand()*100000)}]:[expr {round(rand()*$numdata1)}]:1:-1:-1} $MESSAGE_PORT"
    • 帶引號的字符串,該字符串可以進行變量和命令替換(請參見Tcl(n)手冊頁)
    • 進一步看,我們有:
      • $n($i) <==鍵$i的關聯數組值
      • [expr {round(rand()*100000)}] <== 0到100,000之間的隨機整數
      • [expr {round(rand()*$numdata1)}] <== 0到$numdata1之間的隨機整數

在Tcl取代所有這些之后,我們可能會遇到類似

nsValue at 9.99934 "nValue send_message 10 1 {42:1234:1:-1:1} 8080"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM