如何在Omnet中的UDPBasicApp中检查转发的数据包

时间:2016-02-09 07:16:28

标签: udp omnet++ inet

如何修改UDPBasicApp以查找收到的邮件中的重复项? 我对类UDPBasicApp.cc进行了这些更改,以添加额外的步骤来检查收到的udp数据包,如下所示,但我认为.sca / .vec没有效果,甚至没有显示气泡。 错误在哪里?

$this_month_last_year_end = new \DateTime();
$this_month_last_year_end->modify('first day of this month');
$this_month_last_year_end->modify('-1 year');
$this_month_last_year_end->modify('last day of this month');
$this_month_last_year_end->setTime(23, 59, 59);

1 个答案:

答案 0 :(得分:0)

由于我没有足够的关于参与整个系统的实体的背景信息,我将提供以下想法:

您可以通过将以下行添加到应用*.msg来为应用的每封邮件添加唯一ID:

int messageID = simulation.getUniqueNumber();

现在在接收方,您可以std::map<int, int> myMap存储<id,number-of-occurences>

每次收到消息时,都会将消息添加到std::map并增加number-of-occurences

if(this->myMap.count(myMessage->getUniqueID) == 0) /* check whether this ID exists in the map */
{
    this->myMap.insert(std::make_pair(myMessage->getUniqueID(), 1));    /* add this id to the map and set the counter to 1 */
}
else
{
    this->myMap.at(myMessage->getUniqueID())++; /* add this id to the map and increment the counter */

}

这将允许您跟踪相同的消息是否已转发两次,只需执行以下操作:

if(this->myMap.at(myMessage->getUniqueID()) != 1 ) /* the counter is not 1, message has been "seen" more than once */

对您而言,最棘手的事情是如何定义消息是否被查看过两次(或更多次)。