C++ 检查静脉中是否有重复
我不熟悉Velses,并尝试实现一种机制来检测WSM数据包之前是否收到过。我使用“psid”作为主要变量来标识数据包-是否正确 这种代码有效吗C++ 检查静脉中是否有重复,c++,simulation,omnet++,veins,sumo,C++,Simulation,Omnet++,Veins,Sumo,我不熟悉Velses,并尝试实现一种机制来检测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 *
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.LoC是一个基于PSID的WSMS存储的C++数据结构。 < P>只是PSID是您使用的服务的标识符(见),因此在同一服务的消息之间不是唯一的。要区分消息,您需要一个唯一的消息标识符 一种简单的方法是使用OMNeT++中的每个模块都可以获得的:
msg->getId()
更新:请注意,此id在具有相同内容的所有邮件中也是唯一的(请参见下面的注释)。这不是100%正确。当静脉在内部复制信息时,每辆车都会收到一条具有不同id的信息——尽管实际上该信息是相同的广播。因此,为了实现这一点,您可能需要使用唯一标识符扩展消息,并使用模拟环境中的
getUniqueNumber()
分配一个值。