NS2相关学习——完成一个新协议(3)
在前面已经基本学习了怎么完成一个新协议(一个神奇的ping协议,然鹅还是有点懵。。。)
接下来继续学习相关知识
接着上一部分从1开始
1、必要的修改
如果想要添加添加新的代理程序,就需要修改NS源文件中的内容,特别是在需要使用新的数据包的格式的时候。
① 我们需要一个新的包的类型的ping代理,首先我们需要修改“packet.h”文件,“packet.h”文件中,我们可以找到分组协议ID(如即PT_TCP,PT_TELNET等)的定义。我们在里面做得修改如下代码表示:
enum packet_t {PT_TCP,PT_UDP,......// insert new packet types herePT_TFRC,PT_TFRC_ACK,PT_PING, // packet protocol ID for our ping-agentPT_NTYPE // This MUST be the LAST one
};
同样地,我们需要对p_info做出修改,修改形式如下代码表示
class p_info {
public:p_info() {name_[PT_TCP]= "tcp";name_[PT_UDP]= "udp";...........name_[PT_TFRC]= "tcpFriend";name_[PT_TFRC_ACK]= "tcpFriendCtl";name_[PT_PING]="Ping";name_[PT_NTYPE]= "undefined";}.....}
在进行'make'之前,你必须做一个'make depend',否则这两个文件可能不会被重新编译。
文件'tcl / lib / ns-default.tcl'也必须编辑。 这是定义Tcl对象的所有默认值的文件。 插入以下行以设置Agent / Ping的默认数据包大小。
Agent/Ping set packetSize_ 64
还必须在文件开头的列表中的文件“tcl / lib / ns-packet.tcl”中添加新的ping数据包的条目。 它看起来像下面的代码片段。
{ SRMEXT off_srm_ext_}{ Ping off_ping_ }} {
set cl PacketHeader/[lindex $pair 0]
最后一个更改是必须应用到“Makefile”的更改。 必须将文件“ping.o”添加到ns的目标文件列表中。
sessionhelper.o delaymodel.o srm-ssm.o \ srm-topo.o \ ping.o \ $(LIB_DIR)int.Vec.o $(LIB_DIR)int.RVec.o \ $(LIB_DIR)dmalloc_support.o \ |
您现在只需在ns目录中键入'make'就可以重新编译ns。
2、TCL代码
现在我们需要对TCL代码做一些必要的修改。下面举recv()为例子,代码如下:
Agent/Ping instproc recv {from rtt} {$self instvar node_puts "node [$node_ id] received ping answer from \$from with round-trip-time $rtt ms."
}
以上这段代码访问基类“Agent”的成员变量“node_”,以获取Agent附加的节点的节点ID。
我们可以在上面这些基础上做一些修改,学会创建自己的Agent。
NS2相关学习——完成一个新协议(3)相关推荐
- NS2相关学习——完成一个新协议(2)
在上节中,我们把教程要求的3.1-3.3过了一遍,这一次回到正途上来.看看到底是怎么完成一个新的协议的. 本节中的代码实现了一些简单的"ping"协议(灵感来自"ns注释 ...
- NS2相关学习——完成一个新的协议(1)
接下来要进入对我来说老大难的环节了,从表面的TCL慢慢进入到后端的C++,一起加油学习吧~ 在本节学习中,将给出一个在ns中实现新的协议的例子.但是可以想见的是,如果由我们自己来完成这个工作,势必要对 ...
- NS2相关学习——可靠的MANET应用程序的Gossip协议分析
好久不写,应该努力啦!老师把这篇论文给了我,现在还不知道它在讲什么,来边翻译边学习吧! 文章链接:https://www.researchgate.net/publication/316844643_ ...
- NS2相关学习——在ns中模拟无线场景
之前学习的都是有线场景下的NS2相关应用,现在开始,终于要学习无线啦!无线是我研究的重点,要好好学习呀! 在本节中,我们将学习使用ns中提供的移动无线仿真模型. 该部分由两部分组成. 在第一小节中,我 ...
- 语义表征的无监督对比学习:一个新理论框架
点击上方↑↑↑蓝字关注我们~ 「2019 Python开发者日」7折优惠最后3天,请扫码咨询 ↑↑↑ 译者 | Linstancy 责编 | 琥珀 出品 | AI科技大本营(ID:rgznai100) ...
- NS2相关学习——创建Xgraph的输出文件
经过前面学习代码的编写,这一部分,我们要学会如何进行分析,一个很直观的方式就是将结果图形化表示出来. ns-allinone包的一部分是"xgraph",一个绘图程序,可用于创建模 ...
- ns2相关学习——TCL脚本编写(3)
在这里我们将学习动态网络的建立 1.建立拓扑 当节点很多的时候,我们可以使用循环的方式来建立拓扑. for {set i 0} {$i < 7} {incr i} {set n($i) [$ns ...
- ns2相关学习——TCL脚本编写(2)
下面来学习更加复杂一点的TCL脚本的编写 简述:建立有4个节点的拓扑,其中一个节点作为路由器,用来将两个节点发出的数据包转发到第四个节点上面. 在这里将解释将两个节点的数据流区分开来的方法,展示如何去 ...
- 蓝牙相关学习:3.BLE协议物理层
物理层 频段 调制 信道 跳频 参考地址 Physical Layer 简称 PHY(物理层) 由于BLE属于无线通信,则其通信介质是一定频率范围下的频带资源(Frequency Band) 频段 B ...
最新文章
- MemCached缓存知识知多少?
- 胡珀:从危到机,AI 时代下的安全挑战
- git 合并冲突_GIT提交记录和Revert commit过程分析
- 彻底搞懂Cookie、Session、JWT和Token
- A damn at han’s Windows phone book 笔记(3:ICE——In Case of Emergency)
- tidb 企业_TiDB,日均千万级数据存储方案选型
- [JUC-1]并发包实现及线程状态
- 家庭洗车APP --- Androidclient开展 之 网络框架包介绍(一)
- hibernate还有人用吗
- 如何绕过校园网认证,不付费就可以使用自己的网络。
- Geodatabase
- SQL Server中默认的数据库及作用
- 手机浏览器 打开 APP,APP 嵌套在了浏览器里,网页跳转app问题
- sql怎样与python联系_【Python】SQLAlchemy的数据对象实例能否转为一个简单的对象(切断与数据库会话的联系)...
- 适合老爸用的在线的LaTeX数学公式编辑器
- EmguCV方形答题卡识别
- 美食杰(个人主页) 上
- 合并pd.merge()含有相同的某一列两个不同的dataframe表格
- WPF ContextMenu的使用
- vivado基本开发流程
热门文章
- AES算法重点详解和实现
- 怪哉翻译软件测试,[东方朔传翻译]东方朔传·怪哉原文与翻译
- 伦巴时间步的动作要领_军训动作要领已到,请签收
- Android插u盘自动执行,android tv box ---- 插入u盘直接播放指定文件夹中的视频
- 图解Java常用数据结构
- css 查看更多_在Scrapy中如何利用CSS选择器从网页中采集目标数据——详细教程(上篇)...
- 【LeetCode笔记】121. 买卖股票的最佳时机 / 剑指 Offer 63. 股票的最大利润(Java、动态规划)
- 手机上python编程工具3和3h有区别吗_Python 高级 3
- 利用计算机录音模拟声波,2016年计算机一级考试题库及答案
- mysql 扩展存储过程_MySQL4:存储过程和函数