在同一时间发送给所有节点的消息(send messages from all nodes at th

2019-11-04 02:31发布

以下是.ned文件

simple computer
{
    parameters:

    gates:
        input in1;
        output out1;
        input in2;
        output out2;

}

//
// TODO documentation
//
network Network
{
    @display("bgb=538,302");
    submodules:
        A: computer {
            @display("p=30,88");
        }
        B: computer {
            @display("p=344,96");
        }
        C: computer {
            @display("p=209,199");
        }
    connections:

        A.out1 --> B.in1;
        B.out1 --> A.in1;

        A.out2 --> C.in1;
        C.out1 --> A.in2;

        C.out2 --> B.in2;
        B.out2 --> C.in2;
}

以下是.cc源文件

#include <string.h>
#include <omnetpp.h>
#include <string>

class computer: public cSimpleModule
{
  public:


    virtual void initialize();
    virtual void handleMessage(cMessage *msg);
};
//----------------------------------------------------------------------

Define_Module(computer);
void computer::initialize()
{

    if (strcmp("A", getName()) == 0)
    {

       send(msg, "out1");
       cMessage *copy = (cMessage *) msg->dup();
       send(copy, "out2");
    }
}


void computer::handleMessage(cMessage *msg)
{


}

现在的问题是,在初始化功能节点A发送消息给B和C后,我想从节点B发送消息,从节点B到节点A和C同样之后,我想从节点C发送消息给A和B(如距离向量协议)如何做呢?

另外第二个问题是,如何可以我同时从所有的节点发送消息给相邻节点即A发送消息给B,C; 乙发送消息A,C; Ç发送给A,B。 所有,ABC在同一时间发送邮件? 请让我更加简单明了。 A发送消息给B如下

以下是.cc源文件

#include <string.h>
#include <omnetpp.h>
#include <string>

class computer: public cSimpleModule
{
  public:


    virtual void initialize();
    virtual void handleMessage(cMessage *msg);
};
//----------------------------------------------------------------------

Define_Module(computer);
void computer::initialize()
{

    if (strcmp("A", getName()) == 0)
    {

       send(msg, "out1");

    }
}

的handleMessage(cMessage派生而来* MSG){现在如何从C到A发送消息}

A到B C到A?

Answer 1:

如果我理解你的问题(第一批),什么ü需要做的很简单。
在“的handleMessage”功能做到这一点:

如果我节点“B”和味精来自“A”:像你在初始化函数做发封邮件给A和C。

如果我节点“C”和味精来自“B”:像你在初始化函数做发封邮件给A和B.

您可以查看谁发送MSG与MSG->的getSource(类似that..type
“MSG->”,你会看到的选项。

希望它的帮助。



Answer 2:

在这样做之前,你必须回答这个questio,C怎么知道B接收这样的味精? 你有2个解决方案:

  1. 从一个网络点逻辑解决方案:在做之前,所以你必须发送消息到C阻止他们这样味精的接收
  2. 少逻辑的解决方案:通过检查在选自C模块B模块bool值,并在该时刻决定通过创建一个在B和suscribing给它的C模块中发送消息,或更好地利用信号(检查OMNET ++ DOC)。

祝好运



文章来源: send messages from all nodes at the same time
标签: omnet++