我如何构造一个简单的情况来转发邮件?

问题描述 投票:0回答:1

该消息首先由车辆1发送并由车辆2转发。

net.ned如下。

simple vehicle1
{
    @display("i=device/wifilaptop;p=230,40");
    gates:
        input radioIn @directIn;
}

//
// TODO documentation
//
simple vehicle2
{
    @display("i=device/wifilaptop;p=230,40");
    gates:
        input radioIn @directIn;
}

//
// TODO documentation
//
network Network
{
    @display("bgb=225,175");
    types:
    submodules:
        vehicle1: vehicle1 {
            @display("p=44,87");
        }
        vehicle2: vehicle2 {
            @display("p=188,87");
        }
}

[vehicle1.cc如下。

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

using namespace omnetpp;


class vehicle1 : public cSimpleModule
{
  cMessage *msg;
    // The following redefined virtual function holds the algorithm.
    virtual void initialize();
    virtual void handleMessage(cMessage *msg);
};

// The module class needs to be registered with OMNeT++
Define_Module(vehicle1);

void vehicle1::initialize()
{
    EV << "client initialize" << "\n";

    msg = new cMessage("Emergency");
    send(msg, "out");
}

void vehicle1::handleMessage(cMessage *msg)
{
   // msg = new cMessage("Emergency")
   // send(msg, "out"); // send out the message
}

并且vehicle2.cc如下。

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

using namespace omnetpp;


class vehicle2 : public cSimpleModule
{
  cMessage *msg;
    // The following redefined virtual function holds the algorithm.
    virtual void initialize();
    virtual void handleMessage(cMessage *msg);
};

// The module class needs to be registered with OMNeT++
Define_Module(vehicle2);

void vehicle2::initialize()
{
}

void vehicle2::handleMessage(cMessage *msg)
{
    msg = new cMessage("Emergency");
    send(msg, "out"); // send out the message
}

但是打印了以下错误。

send()/ sendDelayed():没有这样的门或门向量:'out'-在模块(vehicle1)Network.vehicle1(id = 2)中,在网络初始化期间]]

我如何构造它?

消息首先由车辆1发送,然后由车辆2转发。 net.ned如下。 simple vehicle1 {@display(“ i = device / wifilaptop; p = 230,40”);闸门:输入radioIn @ ...

omnet++
1个回答
0
投票

您模拟了一个无线电网络,因此您应该使用sendDirect()而不是send(),因为车辆之间没有连接。要使用sendDirect()发送消息,必须获得一个指向目标模块的指针和门的名称。这是一个示例如何做:

© www.soinside.com 2019 - 2024. All rights reserved.