我创建了两个应用程序,一个是 UdpBasicApp,另一个是 UdpSink。我的目的是从发送方发送到接收方,然后添加 pcap 记录以查看数据包内容。我收到此错误:
Module not found on path 'interfaceTable' defined by par 'MyNetwork.receiver.interfaceTableModule' -- in module (inet::UdpSink) MyNetwork.receiver (id=3), at t=0s, event #1
我创建了扩展 UdpBasicApp 的 MySenderApp 模块
import inet.applications.udpapp.UdpBasicApp;
module MySenderApp extends UdpBasicApp {
}
这是 MySenderApp moduke 的标题
#ifndef MYSENDERAPP_H_
#define MYSENDERAPP_H_
#include <omnetpp.h>
using namespace omnetpp;
class MySenderApp : public cSimpleModule {
public:
MySenderApp();
virtual ~MySenderApp();
protected:
virtual void initialize() override;
virtual void handleMessage(cMessage* msg) override;
};
#endif /* MYSENDERAPP_H_ */
这是我用来向接收者发送数据包的 C++ 代码:
#include "MySenderApp.h"
#include <omnetpp.h>
using namespace omnetpp;
Define_Module(MySenderApp);
MySenderApp::MySenderApp() {
// Constructor
}
MySenderApp::~MySenderApp() {
// Destructor
}
void MySenderApp::initialize() {
// Initialization code, if needed
// Example: schedule a self-message to send a UDP packet
//server =getModuleByPath("MyReceiverApp");
cMessage* msg = new cMessage("SendUDP");
scheduleAt(simTime() + 1.0, msg);
}
void MySenderApp::handleMessage(cMessage* msg) {
if (msg->isSelfMessage()) {
// Create and send a UDP packet
cPacket* packet = new cPacket("MyPacket");
send(packet,"socketOut");
delete msg; // Delete the self-message
}
}
同样,我创建了一个扩展 UdpSink 的模块 MyReceiverApp.ned
import inet.applications.udpapp.UdpSink;
import inet.networklayer.common.InterfaceTable;
module MyReceiverApp extends UdpSink {
parameters:
interfaceTableModule = "^";
}
这是 C++ 代码:
#include "MyReceiverApp.h"
#include <omnetpp.h>
using namespace omnetpp;
Define_Module(MyReceiverApp);
MyReceiverApp::MyReceiverApp() {
// Constructor
}
MyReceiverApp::~MyReceiverApp() {
// Destructor
}
void MyReceiverApp::initialize() {
// Initialization code, if needed
}
void MyReceiverApp::handleMessage(cMessage* msg) {
// Handle incoming UDP packets here
EV << "Received UDP packet: " << msg->getName() << endl;
delete msg;
}
我的网络ned文件如下所示:
network MyNetwork
{
@display("bgb=341,381");
submodules:
sender: MySenderApp {
@display("p=85,76");
@networkNode;
}
receiver: MyReceiverApp {
@display("p=290,178");
@networkNode;
}
connections allowunconnected:
sender.socketOut --> receiver.socketIn;
receiver.socketOut --> sender.socketIn;
}
我的 omnetpp.ini 文件是:
[General]
network = MyNetwork
debug-on-errors = true
sim-time-limit = 5s
record-eventlog = true
我认为错误与接口表有关,但我不知道如何解决它。
A
UDPApp
不能用作主机。您必须使用 StandardHost
或 WirelessHost
并将 UDP 应用程序添加到这些主机的实例中。/inet4.4/tutorials/wireless/WirelessA.ned
和 [Config Wireless01]
中的 /inet4.4/tutorials/wireless/omnetpp.ini
部分。
简而言之,您应该:
为您的 UDP 应用程序创建简单的模块(例如称为
MyUDPApp
)(查看示例 /inet4.4/src/inet/applications/udpapp
)。
使用
WirelessHost
创建您的网络。
添加您想要的主机申请,至少写下
omnetpp.ini
:
**.host1.numUdpApps = 1
**.host1.udpApp[*].typename = "MyUDPApp"
# other parameters of the application