下面代码说明了如何访问其他节点的Agent,以AODV协议为例
添加以下代码到aodv.cc. 用这种方法也可以访问其他对象,比如 mobilenode, 等等.
AODV* aodvagent;
// set i to be the node id
char command[256];
// [Agent/AODV info instances] 返回一个aodvagent的数组
sprintf(command, "foreach aodvagent [Agent/AODV info instances]\
{\nif { [$aodvagent id] == %d} {\nset i $aodvagent}}\nset t $i\n", i);
Tcl& tcl = Tcl::instance();
tcl.eval(command);
const char* ref = tcl.result();
aodvagent = (AODV*)tcl.lookup(ref);
这种方法需要在Agent的成员函数command中含有返回agent节点地址的命令:
if (argc == 2) {
Tcl& tcl = Tcl::instance();
if(strncasecmp(argv[1], "id", 2) == 0) {
tcl.resultf("%d", ra_addr_);
return TCL_OK;
}
//other command
...
}
添加新的Application后报错:
invalid command name "Application/Fire"
while executing
"Application/Fire create _o1931 "
导致的原因是新加的Class没有编译,检查是否把新的object加入到ns的Makefile的OBJ_CC中,加入后编译在运行ns脚本。
分享到:
相关推荐
NS2 TCL脚本实例 NS2是一种流行的网络模拟器,广泛应用于计算机网络和通信领域。本文将通过多个实例来详细介绍NS2的使用方法和应用场景。 实例1: 有线网络,两节点(UDP连接,CBR应用) 在这个实例中,我们将创建...
在ns2中建立TCP连接涉及创建TCP agent在源节点n0产生"tcp"包,并在目的节点n3使用TCPsink agent接收数据并发送ACK。使用`connect`命令将两个agent连接起来,建立TCP链路。默认情况下,TCP包的大小为1Kbytes。 **ns2...
### 二、IPv6在NS2中的实现 #### 1. 地址配置 - **层次化地址类型**: 通过设置`$ns_nodeconfig-addressType hierarchical`来启用层次化的IPv6地址分配方式。 - **域名编号**: 设置特定的域名编号,例如`AddrParams...
添加 BGP 协议到 ns2 中,可以模拟大规模网络中的路由行为,提高模拟的真实性和准确性。 添加 BGP 协议到 ns2 中需要完成以下步骤: 1. 下载并解压缩 ns-BGP 版本 2.0 的压缩包到 ns-allinone-2.33 目录中。 2. ...
随着时间的推移,NS2得到了持续的支持和发展,特别是在1995年获得施乐公司的支持后,加入了VINT项目,进一步增强了其功能性和应用范围。自那时起,NS2不断地吸收来自全球各地研究者的贡献,其中包括来自UCB(加州...
在网络组件方面,NS2模拟的是实际网络的基本构成,如节点(Node)、链路(Link)、队列(Queue)、延迟(Delay)、代理(Agent)、调度器和事件(Scheduler & Event)、定时器(Timer)、分组(Packet)、应用程序...
- 这一部分详细阐述了NS2中数据包的内部结构,包括头部信息和负载数据等内容,这对于理解数据传输机制非常关键。 #### 6. NS2跟踪及后期数据处理 - **设置跟踪文件**:讲解了如何配置NS2以生成跟踪文件,这些文件...
这个压缩包包含的资源旨在帮助用户理解ns2的工作原理,掌握其编程基础,并学会如何在ns2中添加新的协议。 **ns2的基础架构** ns2的核心由一系列C++类组成,这些类模拟了网络中的各种实体,如节点、链接、协议等。它...
本篇文章将详细探讨如何在NS2中实现和理解protoname路由协议,以及如何处理其源码。 首先,路由协议是网络中的核心部分,它决定了数据包如何在不同网络之间传输。在NS2中,有许多内置的路由协议,如Dijkstra的OSPF...
在“ns2.tcl tutorial”部分,你将学习到以下TCL在NS2中的关键概念: 1. **基本语法**:了解TCL的基本语句结构,包括命令、变量、条件语句、循环结构等。 2. **创建网络节点**:学习如何使用`node`命令创建网络节点...
- **手册内容**:TCL教程可能包含TCL的基础语法、命令用法、控制结构、错误处理、文件操作以及如何在NS2中使用TCL编写仿真脚本等。 3. **NS2与TCL结合使用**: - **NS2配置**:TCL脚本用于设置NS2的网络拓扑、...
### ns2中对nodeid,mac地址,ip地址的一点认识 #### NodeID的理解与解析 在NS2仿真环境中,`nodeid_`是用于唯一标识每个节点的重要属性。通过研究NS2的内部实现机制,我们可以更深入地理解`nodeid_`是如何被分配...
在NS-2中,应用程序和代理是两个重要的概念: 1. **应用程序**:在网络模拟中,应用程序通常代表实际的网络服务,如TCP流、UDP数据包发送等。它们负责产生或消费网络流量,以模拟实际网络中用户的行为。在NS-2中,...
在NS2中添加新设计的协议是一项常见的任务,这有助于扩展NS2的功能,以满足特定的网络需求。下面我们将详细介绍如何在NS2中实现这一过程,并结合代码和文档来理解其工作原理。 首先,添加新协议通常涉及以下几个...
- `new Simulator`:创建一个新的模拟器实例,这是NS2仿真过程的起点。 - `finish` 进程:用于在仿真结束时清理资源,包括关闭trace文件和tchan文件。 2. **网络拓扑构造**: - 使用`node`命令创建节点,如`s1`...