在OmNeT ++ / INet中跨多个站点发送数据包时是否重复?

时间:2016-09-02 09:30:50

标签: omnet++ inet

特别关注Ieee80211 in INet库,我对在多个电台发送cPacket / cMessage时会发生什么情况有疑问。

这可能不是严格意义上的INet,而是OmNet++的一般行为。这是问题:

  

当发送cPacket / cMessage并且它被多个站/模块接收时,它是复制还是所有接收器都获得指向同一实例的指针?

真实场景

所以,在这样的网络中:

enter image description here

电台A正在发送由所有其他电台接收的cMessage。当然只有一个站是接收器,其他人都会丢弃数据包。因此,如果B是接收方,而CDEF则为:

void handleMessage(cMessage *msg) {
  if (this->isNotForUs())
    delete msg;
}

是否会导致B框架被破坏?

1 个答案:

答案 0 :(得分:2)

OMNeT++/INET中,通过创建此消息的多个副本并将一个副本发送到一个接收器来建模向多个接收器发送cMessage。有dup()方法可以创建邮件的精确副本。例如:

cMessage *msg2 = msg->dup();

因此,每个接收者都将收到cMessage对象的新实例,并且可以以任何方式删除或处理它。因此,在您的示例中,CDEF删除邮件不会影响B收到的邮件。