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