【问题标题】:Checking for duplicates in VEINS检查 VEINS 中的重复项
【发布时间】:2017-08-02 23:38:16
【问题描述】:

我是 Veins 的新手,我正在尝试实施一种机制来检测之前是否收到过 WSM 数据包。我使用“psid”作为主要变量来识别数据包 - 是否正确?

这种类型的代码会起作用吗? :

bool MyVeinsApp::msgReceivedBefore(int psid){
  /*
  This function will be used to determine if the message was received before
  and should be discarded or processed further
  */

  if(msg_log.find(psid) == msg_log.end()){
     return false
  }
  else {
     return true;
  }

}

这里的 msg.log 是一个 C++ 数据结构,用于存储基于 psid 的 WSM。

【问题讨论】:

    标签: c++ simulation omnet++ veins sumo


    【解决方案1】:

    psid 只是您正在使用的服务的标识符(请参阅WaveShortMessage.msg),因此在同一服务的消息中不是唯一的。要区分消息,您需要一个唯一的消息标识符。

    一个简单的方法是使用id OMNeT++ 中的每个模块都可以得到:

    msg->getId()
    

    更新:请注意,此 id 在所有具有相同内容的消息中也是唯一的(请参阅下面的评论)。

    【讨论】:

    • 这不是 100% 正确的。由于 Veins 在内部复制消息,每辆车都会收到具有不同 id 的消息 - 尽管实际上该消息是相同的广播。因此,要完成这项工作,您可能需要使用唯一标识符扩展您的消息,并使用模拟环境中的getUniqueNumber() 分配一个值。
    猜你喜欢
    • 1970-01-01
    • 2020-08-25
    • 2015-09-08
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多