GPSR协议移植
修改的文件有packet.h、cmu-trace.cc、priqueue.cc、ns-packet.tcl、Makefile
1、在 $HOME/ns-allinone-2.29/ns-2.29下新建gpsr文件夹,并将GPSR-KeLiu中的
gpsr_packet.h, gpsr_neighbor.h, gpsr_neighbor.cc, gpsr.h, gpsr.cc, gpsr.tcl,
wireless-gpsr.tcl, gpsr_sinklist.h, gpsr-sinklist.cc, grid_deploy10x10.tcl, cbr100.tcl加入刚新建的gpsr文件夹中。
2、进入$HOME/ns-allinone-2.29/ns-2.29/common, 修改packet.h
在enum packet_t{
增加 PT_GPSR
}
class p_info {
增加 name_[PT_GPSR]= “gpsr”
}
3、进入$HOME/ns-allinone-2.29/ns-2.29/trace,修改 cmu-trace.cc
(readme遗漏)增加#include <gpsr/gpsr_packet.h>
在 void CMUTrace::format(Packet* p, const char *why)
{
增加 case PT_GPSR;
break;
}
3、进入 $HOME/ns-allinone-2.29/ns-2.29/queue,修改priqueue.cc
void PriQueue::recv(Packet *p, Handler *h)
{
增加 case PT_GPSR:
}
4、进入$HOME/ns-allinone-2.29/ns-2.29/tcl/lib, 修改ns-packet.tcl
foreach prot{
增加GPSR
}
5、进入 $HOME/ns-allinone-2.29/ns-2.29/ ,修改Makefile
在OBJ_STL = 的最后按照格式加入( gpsr前为TAB键而不是空格)
gpsr/gpsr_neighbor.o\
gpsr/gpsr_sinklist.o\
gpsr/gpsr.o
如果需要加入调试信息,则在CCOPT = -Wall 加上 -g, 如下:
CCOPT = -g -Wall
6、重新编译,执行如下命令
cd $HOME/ns-allinone-2.29/ns-2.29/common
touch packet.cc
cd ..
make clean
make
7、在使用脚本wireless_gpsr.tcl进行场景仿真时,需要对 ns-2.30所在的路径进行修改
将wireless_gpsr.tcl 中的将ns2home 修改成 $HOME/ns-allinone-2.30/ns-2.30/
如:
source ../gpsr.tcl 要改成如下
source /home/f/ns-allinone-2.29/ns-2.29/gpsr/gpsr.tcl
文中还有以下几处,都需要给出正确的绝对路径
Set opt(cp) "/home/f/ns-allinone-2.29/ns-2.29/gpsr/cbr100.tcl"
set opt(sc) "/home/f/ns-allinone-2.29/ns-2.29/gpsr/grid-deploy10x10.tcl"
Source /home/f/ns-allinone-2.29/ns-2.29/tcl/mobility/timer.tcl
Source /home/f/ns-allinone-2.29/ns-2.29/tcl/lib/ns-bsnode.tcl
Source /home/f/ns-allinone-2.29/ns-2.29/tcl/mobility/com.tcl
=========割========================================
1.上面2处标红的 在2.30中是这么改的,但是我用的2.35不是,具体怎么改可以参照我在笔记二中移植mflood中的修改,也就是枚举没了,而且保证NTYPE是最后一个就行了。
2.改动过协议的neighbor.h文件的头文件,也就仅仅是一个函数名字,但是导致了所有调用此函数的文件都编译错误,我从gpsr.cc找到gpsr.cc然后找到了neighbor.cc最后才发现在是在头文件的定义中错了。本来也是个小事,但是对我这种对编程不是很精通的人来说就麻烦了,搞了我一个早上终于编译成功。
3.上面标蓝的地方,是原笔记的话,我按照了没改的编译通过了,也就是说相对路径是可以的,不一定要绝对路径,但是有的时候相对路径更加麻烦还容易出错,比如../../../../../XX/X/XXX/XXXXX/ 这么复杂还不如就PWD一下复制个全路径就好了。
4.有些附件我想添加上来但是不知道怎么搞正在考虑中,希望有人能提供点建议
外链地址:http://blog.sina.com.cn/s/blog_414c2a9a01013tau.html
GPSR协议移植的更多相关文章
- mavlink协议移植问题
mavlink协议移植问题 mavlink源代码是一个代码库,使用的时候只需要将mavlink.h头文件包含到工程项目中即可. mavlink通信协议是无状态的连接,一般采用心跳消息跟踪系统是否存在. ...
- Python脚本通过ftp协议移植文件
需求 项目需要定时移植多个客户服务器的文件到公司服务器上,确保文件定时同步和生成监控日志 机制原理 1.客户和公司服务器同时安装vpn,绕过复杂的网关,linux下使用的OpenVPN 2.服务器定时 ...
- 嵌入式学习笔记(综合提高篇 第二章) -- FreeRTOS的移植和应用
1.1 资料准备和分析 上章节通过实现双机通讯,了解如何设计和实现自定义协议,不过对于嵌入式系统来说,当然不仅仅包含协议,还有其它很多需要深入学习了解的知识,下面将列出我在工作和学习上遇到的嵌入 ...
- 小程序入门 MQTT物联网协议 publish 和订阅subscribe onenet 阿里云 百度云 基于GPRS模块(SIM800C/SIM900A/SIM868等)和STM32主控芯片
本文基本公开了如何移植MQTT物联网协议到STM32平台上,并结合GPRS模块(SIM800C/SIM900A/SIM868等)实现publish和订阅topic从onenet,阿里云,百度云等.如果 ...
- Socket上自定义协议总结
TCP只是一个可靠传输的通信管道,上层协议要你自己定的,通俗来说就是发送方和接收方的约定 自定义协议的核心有两个:1. 控制码2. 流程控制 用Socket进行通信,发送的数据包一定是有结构的,类似于 ...
- __attribute__((packed))详解
1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法.这个功能是跟操作系统没关系,跟编译器有关 ...
- @清晰掉 GNU C __attribute__
__attribute__((packed))详解 1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有 ...
- BAS/BRAS/RADIUS简介
标签: java radius协议 linux radius认证服务器 转自: http://blog.csdn.net/sun93732/article/details/5999274 由R ...
- 编译器--__attribute__ ((packed))
1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法.这个功能是跟操作系统没关系,跟编译器有关,g ...
随机推荐
- G - RPG的错排(错排)
Description 今年暑假杭电ACM集训队第一次组成女生队,其中有一队叫RPG,但做为集训队成员之一的野骆驼竟然不知道RPG三个人具体是谁谁.RPG给他机会让他猜猜,第一次猜:R是公主,P是草儿 ...
- 解决servlet乱码问题
1) request中的中文乱码 a) POST方式提交 在获得提交表单信息之前调用request.setCharactersEncoding("UTF-8"); b) GET方式 ...
- Tortoisegit 记住用户名和密码
Tortoisegit 记住用户名和密码方法: [Windows系统] 当你配置好git后,在 C:\Documents and Settings\Administrator\ 目录下有一个 .gi ...
- GNU scientific library
GNU scientific library 是一个强大的C,C++数学库.它涉及的面很广,并且代码效率高,接口丰富.正好最近做的一个项目中用到多元高斯分布,就找到了这个库. GNU scientif ...
- poj 2965
http://poj.org/problem?id=2965 本题要结合poj 1753 来看最好...又有了一点搜索的经验..加油... #include <iostream> #inc ...
- cocos2dx工程
1. create-android-project.sh 进入 pro.android/ ln -s ../Resources ./Resources
- 亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)
下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0- ...
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms” .
ligh@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.3 基于物品的协同过滤推荐算法--读"Item-Based ...
- 正确的lnamp支持SSI的方法!即支持SHTML和include调用!
正确的lnamp支持SSI的方法!即支持SHTML和include调用! 个地方:一个是apache和nginx里的conf文件 第一步:修改apache里的httpd.conf文件 查找:AddTy ...
- JS获取中文拼音首字母,并通过拼音首字母高速查找页面内的中文内容
实现效果: 图一: 图二: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGVzdGNzX2Ru/font/5a6L5L2T/fontsize/400/f ...