《NS与网络模拟》第五章node章节最后有一示例,可是语句解释的不是很全面,G了下,有篇博文http://blog.chinaunix.net/u2/82448/showart_1360762.html解释的较为详细,但输出的结果却没有,为了看得清楚些并能更好的理解相关语句,特将此示例修改如下:
set ns [new Simulator] ;#建立一个Simulator对象的实例并把它赋值给变量ns。
set node [$ns node] ;#新建一个节点并赋值给node。
set udp0 [new Agent/UDP] ;  #新建一个UDP Agent并赋值给udp0。
set udp1 [new Agent/UDP] ;#新建一个UDP Agent并赋值给udp1。
set null [new Agent/Null] ;#新建一个UDP Agent并赋值给null。
$ns attach-agent $node $udp0 ;##将UDP Agent udp0绑定到node上。
puts "===============输出各对象的值================"
puts "ns的值:$ns"
puts "node的值:$node"
puts "udp0的值:$udp0"
puts "udp1的值:$udp1"
puts "null的值:$null"
puts "============================================="
puts "号码为0的slot对应的对象名: [[$node set dmux_] slot 0]" ;
  #查询号码为0的slot对应的对象名并将其输出。
puts "udp0的值: $udp0" ;#输出udp0的值。
puts "udp0所在的slot号码: [[$node set dmux_] findslot $udp0]" ;
  #查询udp0所在的slot号码并输出。
puts "查询null所在的slot号码(若没有则输出-1):[[$node set dmux_] findslot $null]" ;
  #查询null所在的slot号码,表中没有找到该对象(当前null没有加入),返回-1,并输出。
puts "查询udp1所在的slot号码(若没有则输出-1):[[$node set dmux_] findslot $udp1]" ;

puts "============================================="
puts "插入一个指向udp1的表项......\n其表项的slot号码=[[$node set dmux_] installNext $udp1]";
#在最后一个slot 0后插入一个新的指向对象udp1的表项,并返回该表项的slot号码、输出。
puts "查询号码为1的slot对应的对象名:[[$node set dmux_] slot 1]" ;
#查询号码为1的slot对应的对象名并将其输出。
puts "udp1的值:$udp1" ;#输出udp1的值。

puts "============================================="
puts "将号码为0的slot所指向的对象设为udp1(slot0原本指向udp0)......"
[$node set dmux_] install 0 $udp1 ;
#将号码为0的slot所指向的对象设为udp1(slot0原本指向udp0)。
puts "查询号码为0的slot对应的对象名:[[$node set dmux_] slot 0]" ;
#查询号码为0的slot对应的对象名并将其输出。
puts "udp1的值:$udp1" ;#输出udp1的值。
puts "查询号码为1的slot对应的对象名:[[$node set dmux_] slot 1]" ;

puts "============================================="
puts "寻找空闲的slot:[[$node set dmux_] alloc-port $null]" ;
#寻找一个空闲的slot并输出。
puts "将号码为0的slot清空......"
[$node set dmux_] clear 0 ;# 将号码为0的slot清空。
puts "udp1的值:$udp1 (说明slot清空对指向的对象没影响)" ;#输出udp1的值。
puts "寻找空闲的slot:[[$node set dmux_] alloc-port $null]" ;
#寻找一个空闲的slot并输出。

puts "============================================="
#puts "[[$node set dmux_ ] slot 0 ]" ;
#上面的一行命令:查询号码为0的slot对应的对象名,
#由于slot 0被clear,故会返回错误信息,所以应该被注释掉!否则会有错误输出。
$ns run

运行后输出为:
$ ns example5.tcl
===============输出各对象的值================
ns的值:_o3
node的值:_o10
udp0的值:_o13
udp1的值:_o14
null的值:_o15
=============================================
号码为0的slot对应的对象名: _o13
udp0的值: _o13
udp0所在的slot号码: 0
查询null所在的slot号码(若没有则输出-1):-1
查询udp1所在的slot号码(若没有则输出-1):-1
=============================================
插入一个指向udp1的表项......
其表项的slot号码=1
查询号码为1的slot对应的对象名:_o14
udp1的值:_o14
=============================================
将号码为0的slot所指向的对象设为udp1(slot0原本指向udp0)......
查询号码为0的slot对应的对象名:_o14
udp1的值:_o14
查询号码为1的slot对应的对象名:_o14
=============================================
寻找空闲的slot:2
将号码为0的slot清空......
udp1的值:_o14 (说明slot清空对指向的对象没影响)
寻找空闲的slot:0
=============================================
Classifier类提供了一些Tcl实例过程,用户可以在Tcl中对Classifier对象进行控制。主要实例过程:
  1. alloc-port :寻找一个空闲的slot。
  2. clear :将号码为index的slot清空。
  3. installNext:在最后一个slot后插入一个新的指向object的表项,并返回该表项的slot号码:如果object为空,会返回错误信息。
  4. slot :产旬号码为index的slot对应对象名,如果该slot为空,会返回错误信息。
  5. findslot:查询一个object所在的slot号码,如果该object为空,会返回错误信息,如果在表中没有找到该object,会返回-1。
  6. install :将号码为index的slot所指向的对象设为object。
按书上的解释,命令$node set dmux_ 返回$node的PortClassifier对象,可此TCL语句在NS源码中却没有找到,是如何返回的就不得而知啦!

转载于:https://blog.51cto.com/xgucs/187707

《NS与网络模拟》第五章node示例相关推荐

  1. C PrimerPlus 第五章程序示例

    程序清单5.1 # include <stdio.h> # define ADJUST 7.31 int main(void) {const double SCALE = 0.333;do ...

  2. mysql第五章项目二_Todo List:Node+Express 搭建服务端毗邻Mysql – 第五章(第1节)

    点击右上方红色按钮关注"web秀",让你真正秀起来 前言 万丈高楼平地起,我们的Todo List项目也是越来越结实了.Todo List的前面4章内容都是在为Client端开发, ...

  3. 第五章 Java 中的 wait、notify 和 notifyAll 方法示例

    您可能已经注意到 Object 类具有三个 final 方法,分别称为 wait.notify 和 notifyAll.这些方法用于线程间通信.Java 5 引入了执行器框架,它为您处理线程间通信,并 ...

  4. linux简单设计与实现代码,《linux内核设计与实现》第五章(示例代码)

    第五章 系统调用 一.与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层.作用: 为用户空间提供了一种硬件的抽象接口. 系统调用保证了系统的稳定和安全. 每个进程都运行在虚拟系统中,而在 ...

  5. KCNA考试 第五章:kubernetes学习实践

    文章目录 1. 简介 2. 学习目标 3. Kubernetes对象 4. 与Kubernetes交互 4.1 Demo: kubectl 5. Pod 概念 5.1 Demo: Pods 6. 负载 ...

  6. 《Go语言圣经》学习笔记 第五章函数

    <Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...

  7. 第十五章 Caché WebSocket

    文章目录 第十五章 Caché WebSocket 使用WebSockets (RFC 6455) Short Polling 短轮询 Long Polling 长轮询 HTTP Streaming ...

  8. 《Windows核心编程》读书笔记二十五章 未处理异常,向量化异常处理与C++异常

    第二十五章  未处理异常,向量化异常处理与C++异常 本章内容 25.1 UnhandledExceptionFilter函数详解 25.2 即时调试 25.3 电子表格示例程序 25.4 向量化异常 ...

  9. 设计数据密集型应用 第五章:复制

    设计数据密集型应用 第五章:复制 与可能出错的东西比,'不可能'出错的东西最显著的特点就是:一旦真的出错,通常就彻底玩完了. --道格拉斯·亚当斯(1992) 文章目录 设计数据密集型应用 第五章:复 ...

最新文章

  1. 华为云BU总裁:如何把AI从噱头变为生产力?
  2. ZeroMQ接口函数之 :zmq_poll - I/O多路技术
  3. 托管exe文件的加载和执行
  4. java把控制台的结果输出为本地文件作为日志
  5. 电脑仙人掌机器人作文_【中考一等作文2篇】致敬奋斗的时光父爱如根般深沉...
  6. 编译内核出错:invalid option `abi=aapcs-linux'
  7. cojs 安科赛斯特 题解报告
  8. Numpy知识点:np.expand_dims()np.argmax()
  9. 为什么国内的游戏公司吃相越来越难看了?
  10. Micro Sip 配置自己的freeswitch服务器地址
  11. 手机炒股软件测试自学,手机炒股用什么软件好 主流手机炒股软件评测
  12. php 输入经纬度查询位置,php 根据实际地址获取对应的经纬度
  13. 使用python暴力破解ZIP、7Z 、RAR格式压缩包密码教程
  14. 郑捷《机器学习算法原理与编程实践》学习笔记(第二章 中文文本分类(三)—KNN算法)...
  15. Backtrader:用feather格式股票数据代替tushare进行数据回测
  16. [转] 25岁,我习得了自愈近视的魔法
  17. 微信android返回上一页位置,解决微信内置浏览器返回上一页强制刷新问题方法...
  18. U盘中毒后,手把手教你恢复文件
  19. 360 html页面乱码,360浏览器出现乱码的解决方法
  20. java任意键继续_java 按任意键继续怎么写

热门文章

  1. python写机器人插件_从Python写入机器人框架控制台
  2. 电脑测试软件_一种笔记本电脑转轴扭力测试仪
  3. python函数解读_通过7个Python函数来解释区块链
  4. 数据结构c语言pdf2007,数据结构(C语言)严蔚敏 吴伟明 编著 07.pdf
  5. python数据分析如何学_用Python做数据分析,Numpy,Pandas,matp
  6. word2vec原理_初识word2vec词向量
  7. 麦亡9什么时候能装鸿蒙系统,距断供不到10天 麒麟9000即将绝版 华为大招来了:不止鸿蒙2.0...
  8. 学会python爬虫能发财么_python如何赚钱? python爬虫如何进阶? python就业? 如何快速入门python?...
  9. linux中crontab的用法
  10. java hough_java – 如何实现Hough变换?