【问题标题】:Is a packet duplicated when sent across multiple stations in OmNeT++/INet?在 OmNeT++/INet 中跨多个站发送数据包时是否重复?
【发布时间】:2016-09-02 18:06:12
【问题描述】:

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

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

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

真实场景

所以,在这样的网络中:

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

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

它会导致B 的框架被破坏吗?

【问题讨论】:

    标签: omnet++ inet


    【解决方案1】:

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

    cMessage *msg2 = msg->dup();
    

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

    【讨论】:

    • 感谢您提供非常简单易懂的答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多