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

标签 c++ omnet++ inet

我有这段代码,其中扩展 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 的模块 vector ,可以使用各种应用程序模块进行配置。您应该检查各种示例如何在其中配置应用程序。

关于c++ - 如何将传入流量重定向到模块到 Omnet++ 中的简单子(monad)模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56129839/

相关文章:

omnet++ - 尝试使用 INET 引用创建新项目,得到 : "unexpected NAME, expecting $end" in . 消息文件

c++ - 使用 foo::bar 不会屏蔽 typedef-name::bar?

c++ - 比较 const 和非常量指针?

c++ - 为什么 NULL/0 是对象的非法内存位置?

c++ - Omnet++ 错误在子类中设置参数并在另一个子类中调用它

java - 如何在java中打印i-net Crystel Clear Report ex :(report. rpt)而不打开打印对话框博客

c++ - Windows winsock 网络代码 : What am I missing?

c++ - OMNET++:如何在 INET 4.0 中手动设置节点位置?

c++ - 在其他模块中通过 cPar 更改模型参数

OMNeT++ .ini 文件参数