博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NS2常用C++以及TCL命令(转)
阅读量:7027 次
发布时间:2019-06-28

本文共 1726 字,大约阅读时间需要 5 分钟。

在NS2的仿真中,经常需要重复地用到一些TCL命令或者固定的C++用法。现初步汇总如下:

TCL 命令:
$ns at time task
$ns simple-link 
$ns duble-link
C++:
获得当前TCL解释器: TCL& tcl=TCL::instance();
在C++中执行指定命令: tcl.EvalC() 
获得当前时间:           double cur=Simulator:instance().clock();
与节点处理相关的命令: 1. 获得指定包头: 方法1.    hdr_*::access(packet);  方法2:宏  HDR_* (packet)
#define HDR_CMN(p)      (hdr_cmn::access(p))
#define HDR_ARP(p)      (hdr_arp::access(p))
#define HDR_MAC(p)      (hdr_mac::access(p))
#define HDR_MAC802_11(p) ((hdr_mac802_11 *)hdr_mac::access(p))
#define HDR_MAC_TDMA(p) ((hdr_mac_tdma *)hdr_mac::access(p))
#define HDR_SMAC(p)     ((hdr_smac *)hdr_mac::access(p))
#define HDR_LL(p)       (hdr_ll::access(p))
#define HDR_HDLC(p)     ((hdr_hdlc *)hdr_ll::access(p))
#define HDR_IP(p)       (hdr_ip::access(p))
#define HDR_RTP(p)      (hdr_rtp::access(p))
#define HDR_TCP(p)      (hdr_tcp::access(p))
#define HDR_SCTP(p)     (hdr_sctp::access(p))
#define HDR_SR(p)       (hdr_sr::access(p))
#define HDR_TFRC(p)     (hdr_tfrc::access(p))
#define HDR_TORA(p)     (hdr_tora::access(p))
#define HDR_IMEP(p)     (hdr_imep::access(p))
#define HDR_CDIFF(p)    (hdr_cdiff::access(p))  /* chalermak's diffusion*/
//#define HDR_DIFF(p)     (hdr_diff::access(p))  /* SCADD's diffusion ported into ns */
#define HDR_LMS(p)        (hdr_lms::access(p))
2 根据传入的对象全局ID值 获得C++对象的引用。
TclObject::lookup(*)
这里,传入的值 是每个TClObject对应的 全局唯一ID值。一般是以 _o+integer的形式出现,如 _o4
其实,TclObbject的ID值,是在create_shadow函数中,通过o->name(argv[0])传入的;而这个argv[0]的值便是OTCL脚本中,执行new OTCL对象时,由OTCL的 SplitObject 的 getid 方法返回的;
因此,假设我们能够获得TCLObject的具体类型,并且又知道它的这个全局唯一ID值,便可以通过Tcl::lookup(ID)来获得,然后再强制转换成具体类型便可。(其实 lookup是在TCL类中实现的非静态成员函数,TclObject只不过是通过TCL类的静态实例instance来间接调用罢了;而有趣的是,每个TclObject对象在存储时,也是通过TCL类的非静态成员函数 enter 实现的)
节点 有一个 getid ,但它返回的是节点的id 对应着节点的地点(默认情况下) ,  与全局的ID 是不同的概念。因此,就算获得了节点的ID值,也不能获得该节点的C++实际影像的引用。

转载地址:http://dyrxl.baihongyu.com/

你可能感兴趣的文章
idea中如何配置git以及在idea中初始化git
查看>>
关于JQuery Class选择器的一点
查看>>
POJ3264 Balanced Lineup
查看>>
redis-cli 连接远程服务器
查看>>
emlog通过pjax实现无刷新加载网页--完美解决cnzz统计和javascript失效问题
查看>>
sublime 之 vitage/emmet
查看>>
代码管理(四)SVN和Git对比
查看>>
python - hadoop,mapreduce demo
查看>>
mongodb常见管理命令
查看>>
1.7 以函数对象取代函数
查看>>
Vue过渡效果之JS过渡
查看>>
Android项目实战(三):实现第一次进入软件的引导页
查看>>
Web Service基础——基础概念
查看>>
Linux2.4文件系统中vfsmount、安装点的dentry、设备的dentry之间的关系【转】
查看>>
POJ 1201 Intervals
查看>>
JAVA訪问URL
查看>>
APP接口基础学习一
查看>>
设计模式 策略模式 以角色游戏为背景
查看>>
【转】CSS和SVG中的剪切——clip-path属性和<clipPath>元素
查看>>
【C语言入门教程】5.4 递归
查看>>