【NS2】NS2.35成功添加GPSR协议
来源:互联网 发布:东方快车谋杀案知乎 编辑:程序博客网 时间:2024/04/28 13:59
现在想学习一下GPSR协议,但协议的添加方法百度了一下,大多是在老一些的NS2版本上进行,有些方法在NS2.35中已经不再使用,需要稍加改动。于是把我自己在NS2.35中添加GPSR协议的步骤记录下来。
1、首先需要有NS2.35,具体安装方法可以参照 http://blog.csdn.net/joanna_yan/article/details/39779999
2、下载GPSR,我用的是KeLiu版的,下载地址:http://download.csdn.net/detail/joanna_yan/8474651
3、在 $HOME/ns-allinone-2.35/ns-2.35下新建gpsr文件夹,并将GPSR中的以下文件复制到新建的gpsr文件夹中。
cbr100.tcl
gpsr.cc
gpsr.h
gpsr.tcl
gpsr_neighbor.cc
gpsr_neighbor.h
gpsr_packet.h
gpsr-sinklist.cc
gpsr_sinklist.h
grid_deploy10x10.tcl
wireless-gpsr.tcl
4、进入$HOME/ns-allinone-2.35/ns-2.35/common,修改packet.h:
NS2.33之前版本的修改方法都是:
在enum packet_t{
增加 PT_GPSR
}
class p_info {
增加 name_[PT_GPSR]= “gpsr”
}
NS2.35版本中说把packet_t从enum变成了unsigned int
所以这一步的修改方法是:
在typedef unsigned int packet_t的下方有好多的static变量
在最后一个static packet_t PT_NTYPE = 73; // This MUST be the LAST one 的前面加入我们的新协议
static const packet_t PT_GPSR=73;
(因为PT_NTYPE这条必须为最后一条,所以我们加在他前面,并用73号,把PT_NTYPE改为74号)
在class p_info{
增加name_[PT_GPSR]="gpsr";
}
5、进入$HOME/ns-allinone-2.35/ns-2.35/trace,修改cmu-trace.cc:
增加#include<gpsr/gpsr_packet.h>
在void CMUTrace::format(Packet* p,const char* why){
case PT_PING:
break;后面
增加case PT_GPSR:
break;
}
6、进入 $HOME/ns-allinone-2.35/ns-2.35/queue,修改priqueue.cc
void PriQueue::recv(Packet *p, Handler *h)
{
增加 case PT_GPSR:
}
位置如图
7、进入$HOME/ns-allinone-2.35/ns-2.35/tcl/lib, 修改ns-packet.tcl
老版本的修改方式是:
foreach prot{
增加GPSR
}
NS3.35版本的foreach prot是下图这个样子的:
所以我们找到protolist,看到下面有很多协议
把我们的新协议加在这个列表里
8、进入 $HOME/ns-allinone-2.35/ns-2.35/ ,修改Makefile
在OBJ_STL = 的最后按照格式加入( gpsr前为TAB键而不是空格)
gpsr/gpsr_neighbor.o\
gpsr/gpsr_sinklist.o\
gpsr/gpsr.o
9、打开cygwin
10、协议添加完成
- 【NS2】NS2.35成功添加GPSR协议
- ns2.35嵌入gpsr协议
- ns2.35嵌入gpsr协议
- NS2中添加GPSR(KeLiu)协议
- ns2.35下gpsr协议移植
- NS2.35中添加MAC协议
- 在 ns2.35 添加ZRP 协议
- NS2中添加Ping协议
- NS2添加新的协议
- ns2添加注册新协议
- 【Linux+NS2.35】安装成功
- NS2.35下添加新的无线路由协议要点
- 在ns2下添加新协议:
- 在NS2中添加路由协议
- NS2-2.34下添加mflood协议全过程
- 在NS2中添加路由协议
- 在NS2中添加路由协议
- 如何添加一个MAC协议--NS2
- JVM参数配置大全
- C++第二天
- 万能Makefile
- C++第四天
- C++第五天
- 【NS2】NS2.35成功添加GPSR协议
- C++第六天
- c++move语义与右值引用
- C++第七天
- 集合list、ArrayList、LinkedList、Vector
- VMware中修改Ubuntu的分辨率
- 初识单点登录
- MFC第一天
- 【编程练习】求数组和最大的子数组