我是 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。

最佳答案

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

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

msg->getId()

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

关于c++ - 检查 VEINS 中的重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42755429/

10-11 22:59