2007-5-15
更新我使用的
mflood
**是《
ns與網路模擬》書中第七章中所用**,目前許多人都提供了修正版本,本文以此舊版本為例,為了方便大多數新增**都靠近
aodv
的**位置
.在修改
ns的系統
tcl檔案中,乙個很有用的技巧就是參考
ns中已有的**,特別注意格式問題
這個mflood
資料夾拷到
ns-2.31
目錄下,
aodv
也在這個目錄下
mflood
資料夾包含以下
5個檔案:
mflood.h, mflood.cc, mflood_packet.h, mflood-seqtable.h, mflood-seqtable.cc
修改~ns/common/packet.h
這個檔案,一共要改兩個地方。
在這個列舉型別中的
pt_aodv
的下一行加入
pt_mflood,
前方請使用乙個製表符(
tab健)和
pt_aodv
對齊,並且後邊緊跟乙個逗號
,這個列舉型別中的最後乙個應當為
pt_ntype
,這個是不能變的,不過不在最後面新增就好了
在結構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
繫結在一起。5、在
makefile
檔案中(
~ns這個目錄下),的
obj_cc
變數的定義中增加下面這行
aodv/aodv_logs.o aodv/aodv.o /
aodv/aodv_rtable.o aodv/aodv_rqueue.o /
aomdv/aomdv_logs.o aomdv/aomdv.o /
aomdv/aomdv_rtable.o aomdv/aomdv_rqueue.o /
mflood/mflood.o mflood/mflood-seqtable.o /
common/ns-process.o /
注意格式: 製表符+
mflood/mflood.o mflood/mflood-seqtable.o
+空格+
/ +回車
在shell
中進入目錄
ns-2.31
依次執行命令
make clean/make depend/make
執行例子程
mflood-3node.tcl
會出現錯誤的提示
initialize the list xlisthead
(_o17 cmd line 1)
invoked from within
"_o17 cmd port-dmux _o26"
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
了
ns2 30下新增mflood原始碼
一 需要的mflood原始碼 mflood.cc,mflood.h,mflood seqtable.cc,mflood seqtable.h,mflood packet.h 二 具體過程 1 在ns 2.30目錄下建立mflood資料夾,把上述檔案統統放進去。2 修改ns lib.tcl 在ns2....
Ns2 2 33中新增MFlood協議的一些問題
我使用的 mflood 是 ns與網路模擬 書中第七章中所用 目前許多人都提供了修正版本,本文以此舊版本為例,為了方便大多數新增 都靠近 aodv 的 位置 在修改 ns的系統 tcl檔案中,乙個很有用的技巧就是參考 ns中已有的 特別注意格式問題 這個 mflood 資料夾拷到 ns 2.33 目...
Linux下http協議實現
include include include string h include include socket h include errno h include include include include include include ctype h int main int argc,ch...