我使用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收到的?
在离开模拟之前是否有其他解决方案可以发送所有存储的消息?
答案 0 :(得分:2)
为了使用WLAN发送消息,节点通常必须等待才能访问该信道。在此之前,消息已排队。如果在节点被销毁之前立即将消息排入队列,那么消息可能永远不会开始传输。