在 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
是接收者并且 C
、D
、E
和 F
去:
void handleMessage(cMessage *msg) {
if (this->isNotForUs())
delete msg;
}
会不会导致B
的框架被破坏?
在 OMNeT++/INET
中,向多个接收者发送 cMessage
是通过创建此消息的多个副本并将一个副本发送给一个接收者来建模的。有 dup()
方法可以创建消息的精确副本。例如:
cMessage *msg2 = msg->dup();
因此,每个接收者都会收到一个 cMessage
对象的新实例,并且它可以以任何方式删除或处理它。因此,在您的示例中,删除 C
、D
、E
和 F
的消息不会影响 B
.[=20= 收到的消息]
特别是关于 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
是接收者并且 C
、D
、E
和 F
去:
void handleMessage(cMessage *msg) {
if (this->isNotForUs())
delete msg;
}
会不会导致B
的框架被破坏?
在 OMNeT++/INET
中,向多个接收者发送 cMessage
是通过创建此消息的多个副本并将一个副本发送给一个接收者来建模的。有 dup()
方法可以创建消息的精确副本。例如:
cMessage *msg2 = msg->dup();
因此,每个接收者都会收到一个 cMessage
对象的新实例,并且它可以以任何方式删除或处理它。因此,在您的示例中,删除 C
、D
、E
和 F
的消息不会影响 B
.[=20= 收到的消息]