ns 2 31 下實現 mflood協議的新增

2021-04-12 22:20:41 字數 3264 閱讀 4580

[email protected]

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...