我使用的
mflood
**是《
ns與網路模擬》書中第七章中所用**,目前許多人都提供了修正版本,本文以此舊版本為例,為了方便大多數新增**都靠近
aodv
的**位置
.在修改
ns的系統
tcl檔案中,乙個很有用的技巧就是參考
ns中已有的**,特別注意格式問題 這個
mflood
資料夾拷到
ns-2.33
目錄下,
aodv
也在這個目錄下
mflood
資料夾包含以下
5個檔案:
mflood.h, mflood.cc, mflood_packet.h, mflood-seqtable.h, mflood-seqtable.cc
修改~ns/common/packet.h
這個檔案,一共要改兩個地方。
在packet_t中,列舉型別被改變為靜態的無符號整型變數,因此新增staitc const packet_t pt_mflood = 61;同時修改static packet_t pt_ntype=62;
在結構class p_info
mflood
前方是乙個製表符和
aodv
對齊,後邊回車換行就可以了,
如有說 明用#開始,具體參照上方
修改檔案
~ns/tcl/lib/ns-lib.tcl,
在simulator
類的create-wireless-node
成員函式(這個函式的定義為
simulator instproc create-wireless-node args
)中加入下面的**:
switch -exact $routingagent_
這個表示當無線移動節點指定跌幅協議為
mflood
的時候,將會呼叫
create-mflood-agent
成員函式來進行初始化。
然後我們在
~ns/tcl/lib/ns-lib.tcl
檔案中定義
create-mflood-agent
成員函式,代
碼如下:
simulator instproc create-mflood-agent
這裡注意,
set前請使用製表符對齊,否則可能發生錯誤如下:
invalid command name ""
while executing "
set ragent [new agent/mflood [$node id]]" 從
create-mflood-agent
這個函式的定義中可以看到,建立了
agent/mflood
的乙個物件,這個物件最後將和某乙個移動節點
$node
繫結在一起。同時該方法的**一定要是這樣的,不能按照adov協議那樣的寫法,否則會產生如下的錯誤:
num_nodes is set 3
initialize the list xlisthead
ns: _o17 start:
(_o17 cmd line 1)
invoked from within
"_o17 cmd start"
invoked from within
"catch "$self cmd $args" ret"
invoked from within
"if [catch "$self cmd $args" ret] "
(file "mflood-3nodes.tcl" line 61)
怎樣分析錯誤所在處請見文件《錯誤分析》
解決辦法如下:
<
紅色字型
為新增內容
>
第一:在
mflood.cc
中,修改
command
這個函式:
mflood::command(int argc, const char*const* argv)
uptarget_ = (nsobject*)tclobject::lookup(argv[2]);
if (uptarget_ == 0)
return (tcl_ok);
}//add by lzqlgq
else if (strcasecmp (argv[1], "port-dmux") == 0)
//end
... ..............................
}第二:修改
mflood
的建構函式
,mflood::mflood(nsaddr_t id) : agent(pt_mflood), port_dmux_(0)
第三:修改
mflood.h
這個檔案
mflood_rtable rtable_;
trace *logtarget;
nsobject *uptarget_;
nsobject *port_dmux_;
private:
u_int32_t myseq_;
};這樣就
over了
關於Java中Scanner使用的一些問題
今天寫作業,實現乙個簡單的學生管理系統,在控制台簡單互動即可。我使用了scanner來接受輸入,我的寫法模擬如下 public static void main string args else 想法是輸入數字,根據輸入的數字選擇不同的選項,該選項是想輸出一句提示 請輸入學生的學號 然後按提示輸入學...
Unity中配置ARCore遇到的一些問題
建立unity專案注意 不要使用中文路徑!會長時間停止在building native binary with il2cpp執行介面 參考 後面如果遇到其他問題先檢查上面 中提到的配置是否都設定正確。安裝教程 遇到報錯 buildfailedexception main gradle templat...
水印協議中需要解決的一些問題
水印協議中需要解決的一些問題 tag 數字水印 我認為買方賣方數字水印協議中需要解決以下一些問題。1 盜版追蹤問題 市場上出現盜版後,數字作品所有者應該能夠根據盜版作品中存在的水印來追蹤到盜版作品製作者。針對這方面的研究工作比較多,從協議的角度看已經可以解決該問題,關鍵在於水印的魯棒性。2 消費者權...