检查 VEINS 中的重复项
Checking for duplicates in VEINS
我是 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++数据结构
psid 只是您正在使用的服务的标识符(参见 WaveShortMessage.msg),因此在同一服务的消息中不是唯一的。要区分消息,您需要一个唯一的消息标识符。
一个简单的方法是使用 OMNeT++ 中每个模块获得的 id:
msg->getId()
更新:请注意,此 ID 在所有具有相同内容的消息中也是唯一的(请参阅下面的评论)。
我是 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++数据结构
psid 只是您正在使用的服务的标识符(参见 WaveShortMessage.msg),因此在同一服务的消息中不是唯一的。要区分消息,您需要一个唯一的消息标识符。
一个简单的方法是使用 OMNeT++ 中每个模块获得的 id:
msg->getId()
更新:请注意,此 ID 在所有具有相同内容的消息中也是唯一的(请参阅下面的评论)。