NS2常用C++以及TCL命令(转)

在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++实际影像的引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值