特别关注Ieee80211
in INet库,我对在多个电台发送cPacket
/ cMessage
时会发生什么情况有疑问。
这可能不是严格意义上的INet,而是OmNet++的一般行为。这是问题:
当发送
cPacket
/cMessage
并且它被多个站/模块接收时,它是复制还是所有接收器都获得指向同一实例的指针?
所以,在这样的网络中:
电台A
正在发送由所有其他电台接收的cMessage
。当然只有一个站是接收器,其他人都会丢弃数据包。因此,如果B
是接收方,而C
,D
,E
和F
则为:
void handleMessage(cMessage *msg) {
if (this->isNotForUs())
delete msg;
}
是否会导致B
框架被破坏?
答案 0 :(得分:2)
在OMNeT++/INET
中,通过创建此消息的多个副本并将一个副本发送到一个接收器来建模向多个接收器发送cMessage
。有dup()
方法可以创建邮件的精确副本。例如:
cMessage *msg2 = msg->dup();
因此,每个接收者都将收到cMessage
对象的新实例,并且可以以任何方式删除或处理它。因此,在您的示例中,C
,D
,E
和F
删除邮件不会影响B
收到的邮件。