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\n";
        send(tictocMsg, "out");
        tictocMsg = nullptr;
    }
    else {
        // "Lose" the message with 0.1 probability:
        k = uniform(0, 1);
        EV << k;
        if (k < 0.1) {
            EV << "\n\"Losing\" message\n"<< k;
            delete msg;
        }
        else {
            // The "delayTime" module parameter can be set to values like
            // "exponential(5)" (tictoc7.ned, omnetpp.ini), and then here
            // we'll get a different delay every time.
            simtime_t delay = par("delayTime");

            EV << "\nMessage arrived, starting to wait " << delay << " secs...\n";
            tictocMsg = msg;
            scheduleAt(simTime()+delay, event);
        }
    }
}

\"Losing\"可以输出 “Losing”。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值