RSU在finish()函数中不接收已发送的消息

时间:2017-03-15 13:29:29

标签: omnet++ veins

我使用OMNeT ++ - 4.6,sumo-0.22.0和Veins-4a2。

在我的场景中,我修改了.rou.xml文件,以便每个节点建立的路径从RSU到另一个节点。节点根据我指定的生成计时器创建消息并将它们存储在缓冲区中。之后,节点根据发送定时器向RSU(无论是源,目的地还是遇到的RSU)发送消息。

我的目标是每个节点在离开模拟时发送消息以清空其缓冲区,并且将发送在模拟中创建的所有消息。

为了做到这一点,我在节点的应用层中添加了finish()函数中的一些指令:我发送存储在相应节点的缓冲区中的所有数据包,如下所示:

for (i = 0 ; i < bufferSize ; i++) {

  msg = myBuffer.m[i];
  wsm->setWsmData(msg.c_str());
  sendMessage(wsm->getWsmData());   
}

RSU不接收在finish()函数中发送消息的问题,但是当我的模拟中的每个节点都离开时,它到达了他的目的地,即RSU。

  • 我需要了解为什么这些消息不是作为目的地的RSU收到的?

  • 在离开模拟之前是否有其他解决方案可以发送所有存储的消息?

1 个答案:

答案 0 :(得分:2)

为了使用WLAN发送消息,节点通常必须等待才能访问该信道。在此之前,消息已排队。如果在节点被销毁之前立即将消息排入队列,那么消息可能永远不会开始传输。