柯老师的NS2新网址
http://csie.nqu.edu.tw/smallko/ns2/measure.htm
遇见错误:
Administrator@WIN-4CFQRGDACUS ~/ns-allinone-2.35/ns-2.35/tcl/ex
$ ns mytest1.tcl
invalid command name "Agent/TCPSink/mTcpSink"
while executing
"Agent/TCPSink/mTcpSink create _o84 "
invoked from within
"catch "$className create $o $args" msg"
invoked from within
"if [catch "$className create $o $args" msg] {
if [string match "__FAILED_SHADOW_OBJECT_" $msg] {
delete $o
return ""
}
global errorInfo
error "class $..."
(procedure "new" line 3)
invoked from within
"new Agent/TCPSink/mTcpSink"
invoked from within
"set sink [new Agent/TCPSink/mTcpSink]"
(file "mytest1.tcl" line 49)
解决方案:网上搜的
mUDP,mUdpSink,mTcpsink是NS2中没有的,是后来人写的。所以要使用此功能必须自行加入。
---------------------------------------------------------------------
mUDP是UDP的延伸,除了具有UDP的功能外,还能记录所发送的包的信息。mUdpSink可以把接收到的包的信息记录到文件中。加入步骤:
1.下载mUDP, mUdpSink的文件,要下载的有下列几个文件:
mudp.cc、mudp.h、mudpsink.cc、mudpsink.h
下载地址:http://140.116.72.80/~smallko/ns2/measure/
2.新建/ns-allinone-2.33/ns-2.33/measure文件夹,把这四个文件放入其中。
3.修改/ns-allinone-2.33/ns-2.33/common/packet.h,把如下程序加入struct hdr_cmn{}中。
int frametype_; //added by smallko
double sendtime_; // added by smallko
unsigned int pkt_id_; // added by smallko
unsigned int frame_pkt_id_; //added by smallko
4.修改/ns-allinone-2.33/ns-2.33/Makefile,把如下程序加入OBJ_CC下一行。
measure/mudp.o measure/mudpsink.o \
5.修改/ns-allinone-2.33/ns-2.33/tcl/lib/ns-default.tcl,把如下程序加入Agent/Ping set packetSize_ 64下一行。
Agent/mUDP set packetSize_ 1000
6.在/ns-allinone-2.33/ns-2.33目录下执行make clean,make命令,就OK了。
---------------------------------------------------------------------
mTcpSink是TCPsink的延伸,除了具有TCPSink功能外,还能记录所发出的包的信息。加入步骤:
1.下载mtcpsink.cc, mtcpsink.h,放入/ns-allinone-2.33/ns-2.33/measure文件夹中,下载地址同上。
2.修改/ns-allinone-2.33/ns-2.33/Makefile,把如下程序加入OBJ_CC下一行。
measure/mtcpsink.o \
3.在/ns-allinone-2.33/ns-2.33目录下执行make clean,make命令,就OK了。
如果使用的是2.31版本,可参考http://bilsted.blogspot.com/2008/09/mudp-mudpsink.html一文。