ns2编程小技巧(转)

2024-01-25 12:18
文章标签 技巧 编程 ns2

本文主要是介绍ns2编程小技巧(转),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.tcl脚本传入一个int变量给c++代码
在command解析里
int nodenum=atoi(argv[2]);
printf("%d",nodenum);

2.nam中输出结果
Tcl::instance().evalf("$ns trace-annotate \"node send d_\"");

3.改变node颜色
$node1 color red

4.注册顶级命令
即tcl脚本写init_topology

class InitTopologyCommand : public TclCommand {
public:
InitTopologyCommand() : TclCommand("init_topology") { }
virtual int command(int, const char*const*) {
printf("wocao!\n");
return (TCL_OK);
}
};

在'/usr/local/ns2/ns-allinone-2.34/ns-2.34/common/misc.cc'
中包含你写类的头文件

在void init_misc(void)
{
(void)new InitTopologyCommand;
(void)new VersionCommand;
(void)new RandomCommand;
(void)new TimeAtofCommand;
(void)new HasInt64Command;
(void)new HasSTLCommand;
}
添加你自己的类即可

5.c++返回一个值给tcl脚本使用
现在tcl脚本定义变量
set varname 0
再在c++中调用Tcl示例

Tcl &tcl=Tcl::Instance();
tcl.evalf("set varname_ %d",var_in_c++);
即可

6.c++获得ns2系统时间
double
Scheduler::instance().clock();

7.c++获得ns2节点名字
在继承自tclobject之上的类
%s ,name()
===============================================================
没用到的

==============================================================


C++中如何得到节点的移动速度、坐标、移动方向

1.利用下面方法获得节点对象,其中nsaddr_t为节点ID.


static Node* get_node_by_address(nsaddr_t);


2.利用下列方法获取这个节点Node里面有获得节点坐标的方法,看看 mobilenode.cc


3.hdr_cmn结构体是什么意思
Ns-2中包结构包括:
一个报头(Header)堆栈,
一个可选择的数据空间。

hdr_cmn是包头堆栈中的一个重要报头,也就是我们常说的common头,他是数据包传输的关键域,不能被精简。

struct hdr_cmn {
double ts_;
packet_t ptype_;
int uid_;
int size_;
int iface_;


static int offset_;
inline static int& offset() { return offset_; }
inline static hdr_cmn* access(Packet* p) {
return (hdr_cmn*) p->access(offset_);
}


int& ptype() { return (ptype_); }
int& uid() { return (uid_); }
int& size() { return (size_); }
int& iface() { return (iface_); }
double& timestamp() { return (ts_); }
};

时间戳   用于测量每个交换节点的排队时延

ptype_   被调度程序用来确定分组的类型

uid_     被调度程序用于调度分组的到达

size_    是以bytes为单位的虚拟分组的大小


hdr_cmn::access()

接口函数,用来访问数据包(packet)中的这个报头部分,common头是必须得有的!当然一般情况下,你也不得够将其删除(代码中有特殊处理),除非你去修改源码(不过这将导致意料不到的错误)!

 

转自: http://blog.sina.com.cn/s/blog_6074447a0100l3jt.html

 

这篇关于ns2编程小技巧(转)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/643232

相关文章

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

Python中列表的高级索引技巧分享

《Python中列表的高级索引技巧分享》列表是Python中最常用的数据结构之一,它允许你存储多个元素,并且可以通过索引来访问这些元素,本文将带你深入了解Python列表的高级索引技巧,希望对... 目录1.基本索引2.切片3.负数索引切片4.步长5.多维列表6.列表解析7.切片赋值8.删除元素9.反转列表

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

Python中处理NaN值的技巧分享

《Python中处理NaN值的技巧分享》在数据科学和数据分析领域,NaN(NotaNumber)是一个常见的概念,它表示一个缺失或未定义的数值,在Python中,尤其是在使用pandas库处理数据时,... 目录NaN 值的来源和影响使用 pandas 的 isna()和 isnull()函数直接比较 Na

Oracle数据库执行计划的查看与分析技巧

《Oracle数据库执行计划的查看与分析技巧》在Oracle数据库中,执行计划能够帮助我们深入了解SQL语句在数据库内部的执行细节,进而优化查询性能、提升系统效率,执行计划是Oracle数据库优化器为... 目录一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 S

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监