NS2常用C++以及TCL命令

來源:互聯網
上載者:User

在NS2的模擬中,經常需要重複地用到一些TCL命令或者固定的C++用法。現初步匯總如下:

TCL 命令:
$ns at time task
$ns simple-link 
$ns duble-link

C++:
獲得當前TCL解譯器: TCL& tcl=TCL::instance();
在C++中執行指定命令: tcl.EvalC() 
獲得目前時間:           double cur=Simulator:instance().clock();

與節點處理相關的命令: 1. 獲得指定包頭: 方法1.    hdr_*::access(packet);  方法2:宏  HDR_* (packet)

#define HDR_CMN(p)      (hdr_cmn::access(p))
#define HDR_ARP(p)      (hdr_arp::access(p))
#define HDR_MAC(p)      (hdr_mac::access(p))
#define HDR_MAC802_11(p) ((hdr_mac802_11 *)hdr_mac::access(p))
#define HDR_MAC_TDMA(p) ((hdr_mac_tdma *)hdr_mac::access(p))
#define HDR_SMAC(p)     ((hdr_smac *)hdr_mac::access(p))
#define HDR_LL(p)       (hdr_ll::access(p))
#define HDR_HDLC(p)     ((hdr_hdlc *)hdr_ll::access(p))
#define HDR_IP(p)       (hdr_ip::access(p))
#define HDR_RTP(p)      (hdr_rtp::access(p))
#define HDR_TCP(p)      (hdr_tcp::access(p))
#define HDR_SCTP(p)     (hdr_sctp::access(p))
#define HDR_SR(p)       (hdr_sr::access(p))
#define HDR_TFRC(p)     (hdr_tfrc::access(p))
#define HDR_TORA(p)     (hdr_tora::access(p))
#define HDR_IMEP(p)     (hdr_imep::access(p))
#define HDR_CDIFF(p)    (hdr_cdiff::access(p))  /* chalermak's diffusion*/
//#define HDR_DIFF(p)     (hdr_diff::access(p))  /* SCADD's diffusion ported into ns */
#define HDR_LMS(p)        (hdr_lms::access(p))

2 根據傳入的對象全域ID值 獲得C++對象的引用。
TclObject::lookup(*)
這裡,傳入的值 是每個TClObject對應的 全域唯一ID值。一般是以 _o+integer的形式出現,如 _o4
其實,TclObbject的ID值,是在create_shadow函數中,通過o->name(argv[0])傳入的;而這個argv[0]的值便是OTCL指令碼中,執行new OTCL對象時,由OTCL的 SplitObject 的 getid 方法返回的;
因此,假設我們能夠獲得TCLObject的具體類型,並且又知道它的這個全域唯一ID值,便可以通過Tcl::lookup(ID)來獲得,然後再強制轉換成具體類型便可。(其實 lookup是在TCL類中實現的非靜態成員函數,TclObject只不過是通過TCL類的靜態執行個體instance來間接調用罷了;而有趣的是,每個TclObject對象在儲存時,也是通過TCL類的非靜態成員函數 enter 實現的)

節點 有一個 getid ,但它返回的是節點的id 對應著節點的地點(預設情況下) ,  與全域的ID 是不同的概念。因此,就算獲得了節點的ID值,也不能獲得該節點的C++實際影像的引用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.