如何将传入流量重定向到模块到 Omnet++ 中的简单子模块?

How to redirect the incoming traffic to a module to its simple submodule in Omnet++?

我有这段代码,其中扩展 WirelessHost 模块的模块由一个名为 node 的简单模块组成: 当我运行模拟时,只有移动事件,没有显示通信事件。我认为这是由于不 将无人机门模块与接收传入流量的门连接起来。请问我该怎么做?


                            SaaS.ned

import inet.node.inet.WirelessHost;
import inet.visualizer.integrated.IntegratedVisualizer;
import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.physicallayer.unitdisk.UnitDiskRadioMedium;

simple Node
{
    gates:
        input in[];
        output out[];
}

module Drone extends WirelessHost
{                 
        gates:
            input in[];
            output out[];

         submodules:
            myNode: Node;

        connections allowunconnected:    
            for i=0..sizeof(in)-1 {
                in++ -->  myNode.in++;
            }
            for i=0..sizeof(out)-1 {
                out++ <--  myNode.out++;
            }
}

network SaaS
{
    parameters:
        int numDrones;

    submodules:
        visualizer: IntegratedVisualizer {
            @display("p=94.376,433.728");
        }

        configurator: Ipv4NetworkConfigurator {
            parameters:
                config = xml("<config><interface hosts='*' address='145.236.x.x' netmask='255.255.0.0'/></config>");
                @display("p=94.376,56.224;is=s");
        }

        radioMedium: UnitDiskRadioMedium {
            @display("p=94.376,178.71199");
        }

        drone[numDrones]: Drone {
            @display("i=misc/node_vs");
        }
}

                           Node.cc

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

using namespace omnetpp;

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

// The module class needs to be registered with OMNeT++
Define_Module(Node);
using namespace std;

void Node::initialize()
{
    int n = gateSize("out");
    cMessage *msg = new cMessage("tictocMessage");
    for (int i = 0; i < n ; i++)
            send(msg, "out", i);
}

void Node::handleMessage(cMessage *msg)
{
    int n = gateSize("out");
    for (int i = 0; i < n ; i++)
        send(msg, "out", i);
}

这不是,INET 中的 WirelessHost 应该如何配置。

您应该实施一个 UDP 应用程序模块,并且您必须配置该应用程序以在 WirelessHost 中使用。

*.drone[0].numApps = 1
*.drone[0].app[0].typename = "MyUDPApp"

无需扩展 WirelessHost,因为它已经包含一个名为 app 的模块向量,可以使用各种应用程序模块进行配置。您应该检查各种示例如何在其中配置应用程序。