举个例子如下
a、源端:
#define START (intrpt_codeSCR_START) //从初始化转向数据包产生的状态
#define DISABLE (intrpt_codeSSC_STOP) //从数据包产生转向停止
#define STOP (intrpt_codeSSC_STOP) //从初始化转向停止
#define PACKET_GENERATE (intrpt_codeSSC_GENERATE) //继续执行数据包产生的状态
//以上定义的是各个状态之间转换的条件。当有中断产生时(确切说,是当OPNET获得离散事件列表中的一个事件时),判断相应的中断码,如果条件成立,则跳转。
op_intrpt_schedule_self(stop_time, SSC_STOP)
—->intrpt_code = op_intrpt_code()获得中断代码SSC_STOP。
数据包产生程序:
next_intarr_time = oms_dist_outcome(interarrival_dist_ptr); //计算下一个数据包产生时间
next_pk_evh = op_intrpt_schedule_self(op_sim_time() + next_intarr_time, SSC_GENERATE);
3、ON/OFF模型下:
平均数据总负载=(业务结束时间-业务开始时间)×平均ON的持续时间 / (平均ON的持续时间+平均OFF的持续时间)×包长度均值 / 包到达间隔均值
4、封装和解封装
a、封装
Packet* pbb_pkptr;
Packet* pkptr;
int mac;
mac=10;
pbb_pkptr=op_pk_create_fmt(format1_name);
pkptr =op_pk_create_fmt(format2_name);
op_pk_nfd_set(pkptr,“da”,mac);
op_pk_nfd_set(pbb_pkptr,“payload”,pkptr);
b、解封装
Packet* pbb_pkptr;
Packet* pkptr;
int mac;
pbb_pkptr=op_pk_get(op_intrpt_strm());
op_pk_nfd_get(pbb_pkptr,“payload”,&pkptr);
op_pk_nfd_get(pkptr,“da”,&mac);
注意:要在创建包格式时,设置包相应的域为放置包的域。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/209072.html原文链接:https://javaforall.net
