NS3命令行學習


NS3提供了一種通過命令行傳遞參數來輸出和改變腳本中的變量。
在使用命令行機制時,

一 首先要聲明一個命令行類的對象然後調用其函數成員Parse

int main(int argc,char*argv[]){  
...  
CommandLine cmd;  
cmd.Parse(argc,argv);  
...  
}


這兩行代表用戶可用命令行來訪問代碼中全局變量和NS3的屬性。
以example/tutorial中的first.cc爲例,說明可通過命令行顯示該類在使用中所定義的默認值。

二 在編譯腳本時附加一些額外信息

./waf --run "scratch/myfirst --PrintHelp"
./waf --run "scratch/myfirst --PrintAttributes=ns3::PointToPointNetDevice"

這裏寫圖片描述


可以看到腳本中默認屬性DataRate默認值爲32768bit/s,幀最大傳輸單元MTU是1500,網卡地址ff:ff:ff:ff:ff:ff等而在腳本中設這了DataRate爲5Mbit/s,意味者實際運行會覆蓋原始默認值。

三 通過命令行修改屬性值


以echoClient.SetAttribute (“MaxPackets”, UintegerValue (1));爲例說明,原始的這句話就限制了MaxPackets屬性是固定的爲1,如果要改成命令行編譯腳本時自定義可通過:

  uint32_t npacks=1;//自定義一個變量
  CommandLine cmd;
  cmd.AddValue("npacks","Number of packs",npacks);
  cmd.Parse(argc,argv);//必須在前三行之後


   echoClient.SetAttribute ("MaxPackets", UintegerValue (npacks)); 

這裏寫圖片描述

相比原有的,這次客戶端發送了兩次分組而非一次

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章