【问题标题】:How to store different timestamps of packets in OMNeT++如何在 OMNeT++ 中存储数据包的不同时间戳
【发布时间】:2015-06-25 16:55:01
【问题描述】:

我是 OMNeT++ 的新手。我正在做一个简单的模拟,其中客户端将一些数据包发送到服务器。例如,我想存储发送的第一个数据包的时间戳,稍后,我想存储发送的第十个数据包的时间戳。我希望能够将这两个时间戳存储在两个变量中,timestamp_of_first_packettimestamp_of_last_packet,有点像

packets_sent = 1
cPacket* testPacket = new cPacket();
double timestamp_of_first_packet = testPacket->getTimestamp().dbl();
packets_sent++;
... 
double timestamp_of_last_packet = testPacket->getTimestamp().dbl();

目的是计算两个数据包之间的时间间隔,用这个公式:

double time_interval = timestamp_of_last_packet - timestamp_of_first_packet;

我知道这种方法是错误的,因为两个变量存储的值相同。 如何正确存储两个时间戳?提前致谢。

【问题讨论】:

    标签: c++ networking omnet++


    【解决方案1】:

    您可以通过调用 simTime() 来获取当前的仿真时间。如果您想要一些时间来进行模拟,请让您的模块为自己安排一个事件(使用 scheduleAt)。请记住,您的模块是用 C++ 编写的,因此您可以使用它的所有功能(如成员变量)来编写干净的代码。

    【讨论】:

    • 是的,我知道;但你没有回答我的问题。
    • 我很抱歉。您能否重新表述您的问题以帮助理解它?
    • 好的。我知道 simTime() 给了我当前的模拟时间。我也知道如何使用 scheduleAt() 。那不是问题。假设我在 1.0 秒时发送第一个数据包,在 1.5 秒时发送第二个数据包,依此类推,直到在 5.5 秒时发送第十个(最后一个)数据包。 (i.d.,0.5 s 的数据包之间的一个间隔)。如何使用它们的时间戳计算第十个数据包和第一个数据包之间的时间间隔?我必须使用其他方法吗?在这我迷失了方向。提前致谢。
    • 当您发送第一个数据包时,存储当前仿真时间,例如,this->t1 = simTime() 假设 t1 是您的 simtime_t 类型类的成员。九个事件后,再次存储当前模拟时间,这次在,例如t2。时间差可以计算为t2-t1。
    • 谢谢;我会试试你的建议。
    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2011-01-07
    • 1970-01-01
    • 2012-10-04
    • 2020-09-20
    • 2012-05-21
    相关资源
    最近更新 更多