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

Is a packet duplicated when sent across multiple stations in OmNeT++/INet?

特别是关于 Ieee80211 in INet 库,我有一个关于 cPacket/cMessage 跨多个站点发送时会发生什么的问题。

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

When sending a cPacket/cMessage and it is received by multiple stations/modules, is it copied or all receivers get a pointer to the same instance?

真实场景

所以,在这样的网络中:

站点 A 正在发送一个 cMessage,所有其他站点都会接收到它。当然只有一个站是接收者,其他人都会丢弃数据包。因此,如果 B 是接收者并且 CDEF 去:

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

会不会导致B的框架被破坏?

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

cMessage *msg2 = msg->dup();

因此,每个接收者都会收到一个 cMessage 对象的新实例,并且它可以以任何方式删除或处理它。因此,在您的示例中,删除 CDEF 的消息不会影响 B.[=20= 收到的消息]