ns2相关学习——tcl脚本编写(1)

新建一个仿真实例:

set ns [new Simulator]

为了让nam文件和trace文件有地方可以依托,我们要打开.nam文件进行写入,并且使用句柄nf

set nf [open out.nam w]
$ns namtrace-all $nf


设置拓扑图

1、设置节点的脚本语言:建了两个节点,叫n0,n1

set n0 [$ns node]
set n1 [$ns node]


2、建立一个链接

$ns duplex-link $n0 $n1 1Mb 10ms DropTail

该行告诉模拟器对象将节点n0和n1用带宽1Megabit的双工链路连接,延迟10ms、DropTail队列


发送数据

1、为了能真正的发送数据,要设置“代理”——n0发送数据的代理和n1接收数据的代理

首先,设置发送数据的代理

#Create a UDP agent and attach it to node n0
set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0# Create a CBR traffic source and attach it to udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0


脚本创建一个UDP代理并将其附加到节点n0,然后将一个CBR流量生成器附加到UDP代理。数据包大小被设置为500字节,并且每0.005秒发送一个数据包(即每秒200个数据包)。


然后 设置接收数据的代理

set null0 [new Agent/Null] 
$ns attach-agent $n1 $null0

以上脚本创建一个Null代理,作为流量接收器并将其附加到节点n1。


为了能互相发送数据,要将两个代理连接起来,使用以下语句:

$ns connect $udp0 $null0

然后,我们要告诉CBR(发送数据的那个)什么时候开始发送,什么时候结束发送

$ns at 0.5 "$cbr0 start"
$ns at 4.5 "$cbr0 stop"

上面语句就是说,在0.5s的时候开始发送,在4.5s的时候结束发送



下面是整个完整的简单的TCL脚本语言:

#Create a simulator object
set ns [new Simulator]#Open the nam trace file
set nf [open out.nam w]
$ns namtrace-all $nf#Define a 'finish' procedure
proc finish {} {global ns nf$ns flush-trace
#Close the trace fileclose $nf
#Execute nam on the trace fileexec nam out.nam &exit 0
}#Create two nodes
set n0 [$ns node]
set n1 [$ns node]#Create a duplex link between the nodes
$ns duplex-link $n0 $n1 1Mb 10ms DropTail#Create a UDP agent and attach it to node n0
set udp0 [new Agent/UDP]
$ns attach-agent $n0 $udp0# Create a CBR traffic source and attach it to udp0
set cbr0 [new Application/Traffic/CBR]
$cbr0 set packetSize_ 500
$cbr0 set interval_ 0.005
$cbr0 attach-agent $udp0#Create a Null agent (a traffic sink) and attach it to node n1
set null0 [new Agent/Null]
$ns attach-agent $n1 $null0#Connect the traffic source with the traffic sink
$ns connect $udp0 $null0  #Schedule events for the CBR agent
$ns at 0.5 "$cbr0 start"
$ns at 4.5 "$cbr0 stop"
#Call the finish procedure after 5 seconds of simulation time
$ns at 5.0 "finish"#Run the simulation
$ns run



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508621.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ns2相关学习——TCL脚本编写(2)

下面来学习更加复杂一点的TCL脚本的编写 简述:建立有4个节点的拓扑,其中一个节点作为路由器,用来将两个节点发出的数据包转发到第四个节点上面。 在这里将解释将两个节点的数据流区分开来的方法,展示如何去检测一个队列是否是满…

ns2相关学习——TCL脚本编写(3)

在这里我们将学习动态网络的建立 1、建立拓扑 当节点很多的时候&#xff0c;我们可以使用循环的方式来建立拓扑。 for {set i 0} {$i < 7} {incr i} {set n($i) [$ns node] }这里的数组不需要事先声明。 2、建立链接 这里我们要把7个节点链成一个环儿&#xff0c;同样使用…

NS2相关学习——完成一个新的协议(1)

接下来要进入对我来说老大难的环节了&#xff0c;从表面的TCL慢慢进入到后端的C&#xff0c;一起加油学习吧~ 在本节学习中&#xff0c;将给出一个在ns中实现新的协议的例子。但是可以想见的是&#xff0c;如果由我们自己来完成这个工作&#xff0c;势必要对NS2十分的熟悉并且要…

NS2相关学习——完成一个新协议(2)

在上节中&#xff0c;我们把教程要求的3.1-3.3过了一遍&#xff0c;这一次回到正途上来。看看到底是怎么完成一个新的协议的。 本节中的代码实现了一些简单的“ping”协议&#xff08;灵感来自“ns注释和文档”&#xff08;现在更名为ns手册&#xff09;的第9.6章中的“ping请…

NS2相关学习——完成一个新协议(3)

在前面已经基本学习了怎么完成一个新协议&#xff08;一个神奇的ping协议&#xff0c;然鹅还是有点懵。。。&#xff09; 接下来继续学习相关知识 接着上一部分从1开始 1、必要的修改 如果想要添加添加新的代理程序&#xff0c;就需要修改NS源文件中的内容&#xff0c;特别…

NS2相关学习——创建Xgraph的输出文件

经过前面学习代码的编写&#xff0c;这一部分&#xff0c;我们要学会如何进行分析&#xff0c;一个很直观的方式就是将结果图形化表示出来。 ns-allinone包的一部分是“xgraph”&#xff0c;一个绘图程序&#xff0c;可用于创建模拟结果的图形表示。 在本节中&#xff0c;将向…

NS2相关学习——在ns中模拟无线场景

之前学习的都是有线场景下的NS2相关应用&#xff0c;现在开始&#xff0c;终于要学习无线啦&#xff01;无线是我研究的重点&#xff0c;要好好学习呀&#xff01;在本节中&#xff0c;我们将学习使用ns中提供的移动无线仿真模型。 该部分由两部分组成。 在第一小节中&#xff…

An Energy-Efficient Ant-Based Routing Algorithm for Wireless Sensor Networks (无线传感网中一种基于蚁群算法的能量有效路由)

牙说&#xff1a;这篇论文是研究蚁群算法在能量有效路由协议的过程中必读的一篇文章&#xff0c;原是全英文&#xff0c;在这里按照自己的理解大致翻译成中文&#xff0c;好好学习&#xff0c;与君共勉。 论文题目&#xff1a;An Energy-Efficient Ant-Based Routing Algorith…

活在幻梦中的你我

其实仔细想想,人类和地球上的其它物种有什么不同呢?可能仅有的不同是,人类会去相信那本来并不存在的事情. 并且会为了那种虚幻的东西为止拼搏、努力。比如科技的发展&#xff0c;不就是人类在实现自己想象中的事物么&#xff0c;飞机、轮船、家电、计算机等等&#xff0c;无一…

An Energy-Efficient Ant-Based Routing Algorithm for Wireless Sensor Networks (无线传感网中基于蚁群算法的能量有效路由)2

牙说&#xff1a;接着上一篇继续写。论文标题&#xff1a;An Energy-Efficient Ant-Based Routing Algorithm forWireless Sensor Networks作者&#xff1a;Tiago Camilo, Carlos Carreto, Jorge S Silva, Fernando Boavida正文&#xff1a; 2、相关工作可以考虑无线传感器网络…

NS2仿真分析无线网络的攻击防御(1)

这个学期有个选题是NS2仿真分析无线网络的攻击防御&#xff0c;比较有意思的样子&#xff0c;现在来慢慢学一下这个是什么东西。 首先&#xff0c;还是一篇文章&#xff08;老长老长了&#xff09;&#xff0c;还是全英文的&#xff0c;还是先来分析一下它到底在说什么&#x…

NS2仿真分析无线网络的攻击防御(2)

牙说&#xff1a;继续上一篇博文进行翻译。 4. NS和我们的工作 我们试图评估黑洞攻击在无线Ad-hoc网络中的影响。 为了实现这一点&#xff0c;我们已经使用NS 网络模拟 [14]程序模拟了一个含有黑洞节点的无线自组网络场景。为了模拟无线自组织网络中的黑洞节点&#xff0c;我…

Java集合之HashMap源码分析

以下源码均为jdk1.7 HashMap概述 HashMap是基于哈希表的Map接口的非同步实现. 提供所有可选的映射操作, 并允许使用null值和null健. 此类不保证映射的顺序. 需要注意的是: HashMap不是同步的. 哈希表 哈希表定义: 哈希表是一种根据关键码去寻找值的数据映射结构, 该结构通…

NS2相关学习——可靠的MANET应用程序的Gossip协议分析

好久不写&#xff0c;应该努力啦&#xff01;老师把这篇论文给了我&#xff0c;现在还不知道它在讲什么&#xff0c;来边翻译边学习吧&#xff01; 文章链接&#xff1a;https://www.researchgate.net/publication/316844643_Analyzing_Gossip_Protocols_for_Reliable_MANET_Ap…

Java集合之LinkedList源码分析

概述 LinkedLIst和ArrayLIst一样, 都实现了List接口, 但其内部的数据结构不同, LinkedList是基于链表实现的(从名字也能看出来), 随机访问效率要比ArrayList差. 它的插入和删除操作比ArrayList更加高效, 但还是要遍历部分链表的指针才能移动到下标所指的位置, 只有在链表两头的…

lex和yacc环境配置

lex和yacc的使用很简单&#xff0c;但环境配置却是各种问题&#xff0c;本章说明lex和yacc在windows下的环境配置。 软件需求&#xff1a; 系统 win7-64位(win7-32, win8, win10全部通过) c编译器&#xff1a; vs2010(2008,2013,2015也全部通过) lex和yacc编译器&#xff1a…

Java集合之Vector源码分析

概述 Vector与ArrayLIst类似, 内部同样维护一个数组, Vector是线程安全的. 方法与ArrayList大体一致, 只是加上 synchronized 关键字, 保证线程安全, 下面就不具体分析源码了, 具体可以查看ArrayList中的源码分析. Vector源码分析 1.主要字段 2.构造函数 3.增删改查 其他方法…

Gossip协议的P2P会员管理

阅读此论文主要目的在于理解gossip协议及其背后的原理&#xff0c;此部分详细翻译&#xff0c;其余部分看时间 文章标题&#xff1a;Gossip协议的P2P会员管理 作者&#xff1a;Ayalvadi J. Ganesh, Anne-Marie Kermarrec, and Laurent Massoulie Abstract&#xff1a;基于…

Java集合之LinkedHashSet源码分析

概述 LinkedHashSet与HashSet类似, 不同的是LinkedHashSet底层使用LinkedHashMap维护元素插入的顺序. LinkedHashSet继承自HashSet, 只是重写了HashSet的构造方法, 初始化一个LinkedHashMap, 其他均与HashSet相同. LinkedHashSet构造方法 HashSet的构造方法: 以上几乎就是Li…

2016-2017NBU期末考试记录

又是一年期末考 这个学期考的少&#xff0c;就两门 还是来记录一下都考了什么东西吧 首先编译&#xff1a;编译的题目是开始十道判断题&#xff0c;后面全都是大题。大题内容有&#xff1a;画出第二次递归过程中&#xff0c;活动记录中静态链和动态链的情况&#xff1b;给出一…