在ns2下新增新協議:
在NS2想要新增一個協議,至少要實現如下8個步驟。下面以ns2中的ping為例子說明,在版本2.29中已存在ping,這裡改為bing。
1.因為ping在資料夾apps下,這裡就在該目錄下(自己新建協議時,應該建立新的資料夾bing)新建檔案bing.h bing.cc。
2.在bing.h中定義為packet頭定義一個struct資料型別, 例如 "struct hdr_bing"; ( 仿照 "~ns/apps/ping.h" 檔案中的hdr_ping)和一個類BingAgent(仿照PingAgent)
3.在bing.cc中定義BingHeaderClass和BingClass(仿照ping.cc中的類)。
前面三步可以省略,直接在資料夾apps下cp ping.h bing.h和cp ping.cc bing.cc,然後把bing.h和bing.cc中所有的ping,PING,Ping用bing,BING,Bing替代。以下幾步是必要的修改:
4. 在 "~ns/common/packet.h" 檔案中,為 enum packet_t 新增一個新的條目 "PT_BING" ,並在p_into類的建構函式中新增一個新的陣列元素 name[PT_BING] = "bing",要注意此處的位置必須對應。
5. 在檔案 "~ns/tcl/lib/ns-packet.tcl" 中,在"foreach prot" 中新增"BING" 。
6. 在檔案 "~ns/tcl/lib/ns-default.tcl" 中,設定包的預設大小Agent/Bing set packetSize_ 64
7.在檔案~ns/makefile中,apps/ping.o後新增apps/bing.o.(apps表示bing.h和bing.cc所在的資料夾,所以如果自己新建了資料夾bing,此處應新增bing/bing.o)
8.儲存以上檔案後,需要先'make depend'一下,生成依賴關係,然後再'make'。成功後,可以仿照ping.tcl建立一個bing.tcl(在檔案中用bing,Bing替換ping,Ping)。接下來就可以執行ns bing.tcl檢視結果。
以上各個步驟,步驟2是為了定義新的包頭格式;步驟3是為了能夠將該資料包與Otcl聯絡起來;步驟4是為了在trace中能夠使用該資料包,注意name[PT_TCP]="tcp",其中的 "tcp" 即是出現在trace檔案中的第五列,pkt type;步驟5是為了NS在啟動的時候能夠載入我們定義的包頭。
最後需要注意:如果新建的協議是無線路由協議,則還需要在 "~ns/tcl/lib/ns-lib.tcl" 檔案中Simulator的create-wireless-node方法中新增相應的處理。
小結:.h檔案中主要定義頭結構體hdr_[name],[name]agent:public agent。結構體中訪問方法部分基本相同,類中要有預設建構函式和命令函式。所有.cc檔案中的[name]headerclass和[name]class內容基本相同,主要是類agent中成員函式的例項化。
相關推薦
在ns2下新增新協議:
在NS2想要新增一個協議,至少要實現如下8個步驟。下面以ns2中的ping為例子說明,在版本2.29中已存在ping,這裡改為bing。 1.因為ping在資料夾apps下,這裡就在該目錄下(自己新建協議時,應該建立新的資料夾bing)新建檔案bing.h bing.cc。
wampServer下新增新PHP模組
想用到的php版本較新,沒有去安裝homestead,本機用的是wamp,但wamp自帶的php是5.6.25和php7.0.10,所以就想搞個多版本的出來。 1.下載php最新版本 結合自己的
Ubuntu 16.04下新增新使用者
某些情況下,Ubuntu 使用useradd 新使用者名稱,在home 資料夾下面看不到新建立的使用者資料夾,例如:[email protected]:/home/kuku# useradd spark [email protected]:/home/ku
Android下新增新的自定義鍵值和按鍵處理流程
[cpp] view plain copy print? <span style="font-family:FangSong_GB2312;font-size:18px;">/* * Copyright (C) 2010 The Android Open So
linux下新增新驅動的方法
下面以UCLINUX為例,介紹在一個以模組方式出現的驅動程式test.c基礎之上,將其編譯進核心的一系列步驟: (1) 改動test.c源帶程式碼 第一步,將原來的: #include #include char kernel_version[]=UTS_RELE
ubuntu下新增新使用者、解決遠端登入問題
1 新增新使用者 1.1 新增新使用者 sudo useradd go -d /home/go -m #第一個go,指使用者名稱 #-d /home/go 指定使用者登入系統時的主目錄,宿主目錄 #-m 如果/home/go路徑不存在,自動建立
linux下新增新使用者,並賦予root許可權
1.useradd -d /usr/xxx -m xxx 2.cd /usr/xxx 3. 更改密碼 passwd xxx 4. 賦予許可權 vim /etc/sudoers 找到 root ALL=(ALL) ALL
CentOS下新增新硬碟
1、檢視新硬碟 #fdisk –l 新新增的硬碟的編號為/dev/sdb 2、硬碟分割槽 1)進入fdisk模式 #/sbin/fdisk /dev/sdb 2)輸入n進行分割槽 3)選擇分割槽型別 這裡有兩個選項:
顯微鏡下的webpack4的新特性:mode詳解
webpack4支援的一個新特性就是zero配置,不需要config,也可以打包,這對於懶癌患者很有誘惑力,但是這也意味著我們不清楚零配置發生了寫什麼,也不知道打包出來的檔案是否符合我們的心意,全部都是佛系打包。不過作為專案的親爹親媽,還是要對自己的孩子負責,每個打包過程都是要可控的。本文就是詳解不同mode
中國將有可能在全球化的背景下收穫新的人口紅利:3星|《<財經>2019:預測與戰略》
《財經》2019 :預測與戰略 《財經》雜誌的年刊。內容是針對2019年的預測分析。我認為《財經》的調查報告比較有深度,分析則不是我愛看的型別。 總體評價3星,有參考價值。 以下是書中一些內容的摘抄,#號後面是kindle電子版中的頁碼: 1:北京最好的醫院和中小學大都集中在四環、三環裡。這道公共
Fabric網路下如何為通道新增新的組織
首先要明確新增通道應該要做哪些事!一要通知orderering service伺服器,新組織加入到通道,驗證過的建議交易封裝後是要提交給orderering service伺服器,由它分發到commit peer節點。二是通道配置要改變,新組織極有可能成為背書策略貢獻者。
給kali的metasploit下新增一個新的exploit
首先在/usr/share/metasploit-framework/modules/exploits/目錄下新建一個自定義資料夾,例如fwdtest 仿造exploits目錄下的其他exp(rb檔案)編寫自己的exp.rb指令碼(這邊用0day安全:軟體漏洞分析技術裡的
Spket1.6.23在Eclipse下新增程式碼自動補齊功能的配置:
一、Spket簡介 Spket是一個RIA的開發工具,具有程式碼自動完成、語法高亮、內容概要等功能,可以幫助開發人員高效的編寫JavaScript程式。 效果圖: 二、安裝Spket 1.去官網(http://www.spket.com/download.
Asp.Net MVC4入門指南(7):給電影表和模型新增新欄位
在本節中,您將使用Entity Framework Code First來實現模型類上的操作。從而使得這些操作和變更,可以應用到資料庫中。 預設情況下,就像您在之前的教程中所作的那樣,使用 Entity Framework Code First自動建立一個數據庫,Code First為資料庫所新增的表,將幫
Kubernetes1.7新特性:新增自動伸縮條件和引數
一、核心概念Horizontal Pod Autoscaling,簡稱HPA,是Kubernetes中實現POD水平自動伸縮的功能。雲端計算具有水平彈性的特性,這個是雲端計算區別於傳統IT技術架構的主要特性。對於Kubernetes中的POD叢集來說,HPA可以實現很多自動化
numpy新增新的維度:newaxis
numpy中包含的newaxis可以給原陣列增加一個維度 np.newaxis放的位置不同,產生的新陣列也不同 一維陣列 x = np.random.randint(1, 8, size=5) x Out[48]: array([4, 6, 6, 6
微信小遊戲釋出新規則:拒絕“分享濫用”行為 違者下架處理
最近關於部分微信小遊戲分享濫用行為的話題討論不止,大量使用者反饋表示此類行為已造成嚴重困擾。微信遊戲產品總監孫春光曾表示,微信會重新制定規則約束病毒分享行為。今日,微信小遊戲正式釋出公告稱,小遊戲拒絕“分享濫用”行為,違規情形將會受到處理,希望開發者不要觸犯“雷區”。 以下
jQuery 往table新增新內容有以下四個方法:
jQuery 新增新內容有以下四個方法: append() - 在被選元素的結尾插入內容 prepend() - 在被選元素的開頭插入內容 after() - 在被選元素之後插入內容 before() - 在被選元素之前插入內容 下面例項演示:點選按鈕則
Linux學習(4):ubuntu新增新使用者並設定root許可權
一,新增使用者 ubuntu建使用者最好用adduser,雖然adduser和useradd是一樣的在別的linux糸統下,但是我在ubuntu下用useradd時,並沒有建立同名的使用者主目錄。
kubernetes1.7新特性:新增StorageOS卷外掛和Local持久儲存
背景介紹在Kubernetes中卷的作用在於提供給POD儲存,這些儲存可以掛載到POD中的容器上,進而給容器提供儲存。從圖中可以看到結構體PodSpec有個屬性是Volumes,通過這個Volumes屬性可以關聯到結構體Volume和結構體VolumeSource,而且這個V