NS3网络仿真项目(三)—— Events & Simulator

本文介绍了NS3网络仿真器的事件(Event)和Simulator类的使用。事件通过EventId进行标识,可以进行取消和移除操作。Simulator是事件调度的入口,通过Simulator::Run执行按时间顺序的事件。文中举例说明了如何创建和调度事件,包括周期性发送数据包、延迟转发和非当前对象调度。同时,文章提到了Time类用于表示仿真时间,并强调了调整时间精度和提取仿真时间的方法。
摘要由CSDN通过智能技术生成

NS3是一种离散事件网络仿真器。从概念上讲,该仿真器会持续追踪一系列事件的发生,通过事件的调度使其在特定的仿真时间被执行。仿真器的工作就是按仿真时间顺序执行离散事件。举个具体例子来说,如果一个事件在仿真时间100s时被执行,而下一个事件发生在仿真时间200s时,仿真器的仿真时间会立刻从100s变为200s去执行下一个事件。这就是所谓的“离散事件“仿真器。

本文主要介绍:事件Event的建立和取消,仿真器的调度和仿真时间的提取。

1. Event

EventId类 可以用来作为一个事件的标识,进而可以对指定的事件进行取消和移除等操作,下面结合Simulator进行说明。

2. Simulator

Simulator类是访问事件调度工具的公共入口点。在开始仿真时,会调度一些事件至事件列表中,通过进入仿真器主循环(即Simulator::Run)按仿真时间顺序执行他们。仿真器执行事件期间,调度器(Scheduler)会插入或移除某些事件至事件列表中。直到事件列表中没有事件需要被执行或强制调用了Simultor::Stop函数,此时仿真结束。

关于调度器的使用,这里给出几个例子

例1:客户端Client按照某一指定的时间间隔m_interval不断发送数据包

class UdpClient : pubic Application
{
public:
    ...

private:
    virtual void StartApplication(void);
    virtual void StopApplication(void);
    void Send(void);
    ...
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值