OMNeT 例程 Tictoc7 学习笔记
把 Tictoc6 的固定延迟时间 1s 设为随机值;删除概率小于 0.1 的数据包,也就是丢包率是 0.1。
在 ned 文件中加入这一行:
volatile double delayTime @unit(s);
delayTime是一个可变的变量,在 omnetpp.ini 中设置:
Tictoc7.tic.delayTime = exponential(3s) Tictoc7.t0c.delayTime = truncnormal(3s,1s)
exponential() 参数为平均值,truncnormal() 将正态分布中的值截断为非负值。
为了方便理解代码,把 uniform(0,1) 的值输出:
void Txc7::handleMessage(cMessage *msg) { double k = 0; if (msg == event) { EV << "Wait period is over, sending back message "; send(tictocMsg, "out"); tictocMsg = nullptr; } else { // "Lose" the message with 0.1 probability: k = uniform(0, 1); EV << k; if (k < 0.1) { EV << " "Losing" message "<< k; delete msg; } else { // The "delayTime" module parameter can be set to values like // "exponential(5)" (tictoc7.ned, omnetpp.ini), and then here // well get a different delay every time. simtime_t delay = par("delayTime"); EV << " Message arrived, starting to wait " << delay << " secs... "; tictocMsg = msg; scheduleAt(simTime()+delay, event); } } }
"Losing"可以输出 “Losing”。