检查VEINS中的重复项

时间:2017-03-13 01:44:11

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

我是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是一个存储基于psid的WSM的C ++数据结构。

1 个答案:

答案 0 :(得分:2)

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

一种简单的方法是使用OMINT ++中每个模块得到的id

msg->getId()

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