日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NS3-命令行参数

發布時間:2023/12/31 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NS3-命令行参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考書:《NS-3網絡模擬器基礎與應用》–馬春光、姚建盛
這里有電子版:鏈接: https://pan.baidu.com/s/1z7PpGkYKd6dt6pIwTfYj5g 密碼: kisn。如果百度網盤不騙我的話,應該是永久有效的。
命令行可以傳遞參數修改系統已有參數。

一、修改系統參數

ns-3還提供了另一種不需要重新編輯和構建腳本運行行為的方法。這種方法就是通過命令行傳遞參數來改變腳本中的變量。
不過在使用命令行系統前,首先要聲明一個命令行類的對象,然后調用Parse,具體方法如下:

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

這兩行代碼簡單明了,但是很重要。它意味著,用戶可以通過命令行來訪問代碼中的全局變量和ns-3中的屬性系統。我們在此基礎上稍微修改一下first.cc,在編譯時附加一些額外的信息,如下:

--PrintHelp: Print this help message. --PrintGroups: Print the list of groups. --PrintTypeIds: Print all TypeIds. --PrintGroup=[Group]:Print all TypeIds of group. --PrintAttributes=[typeid]: Print all attributes of typeid. --PrintGlobals: Print the list of globals.

PrintAttributes這一項的功能就是掛載用戶想要修改的文件系統的屬性名。比如在這里:

PointToPointHelper pointToPoint;pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

就是first.cc中為建立物理連接所配置的信道屬性。接下來通過命令行對其重新賦值。
因為在腳本中用到的是PointToPoint類,因此可以通過命令行顯示該類在使用中所定義的默認值,不過在操作過程中是使用已經和網絡設備綁定的類PointToPointNetDevice中所涉及的屬性的默認值,操作如下:

可以看到一些默認的屬性。但是我們實際修改了DateRate的速率,5Mbps,我們分別使用默認值和5Mbps和默認值運行,看看有什么區別。

使用默認值(把DateRate賦值那句注釋掉)得到結果為:

由于把數據的發送速率從5Mbit/s減少到了32768bit/s,所以服務器收到數據的事件相應地推遲了一段時間。當然也可以通過命令行進一步修改這些屬性值。

二、自定義變量

我們可以添加自己的變量,然后通過鉤掛將其與命令行相關聯。
首先確定要鉤掛的變量,還是以first.cc為例:

echoClient.SetAttribute ( "MaxPackets",UnitegerValue(1));

這句命令的意思是限制了MaxPackets屬性是固定的,如果想把這段代碼改成可以在命令行編譯腳本時自定義,那么稍微給代碼整個容:

int main ( int argc, char *argv[] ) { Uin32_t nPackets = 1; // 添加一個變量 ComandLine cmd; //下行代碼使變量nPackets是可以在命令行里修改。 cmd.AddValue("nPackets", "Number of packets to echo", nPackets); cmd.Parse (argc, argv); //這個代碼一定要放在上述三行代碼之后 ...

然后下面代碼做如下修改,用nPackets代替常量1,這樣就能傳參了:

echoClient.SetAttribute ( "MaxPackets",UnitegerValue(nPackets));

我們再編譯first》cc腳本,并且提供命令行參數: --PrintHelp 如下:

這時候多了一個Program Arguments, 這就是我們設置的參數。現在對參數進行一下修改,設置發送兩次分組:

注意 "–nPackets=2"不要打空格。這里的輸出結果和nPackets=1時有很大區別,這里客戶端發送了兩次分組,而之前只發送了一次分組。

總結

以上是生活随笔為你收集整理的NS3-命令行参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。