Omnet++ Omnet++;:更改函数的位置';I don’我没有按预期工作
实际上,我正在尝试编辑etherhost2函数以发送到多个目的地,并且我达到了仅第一次可以发送的程度 在原始代码中,如果条件为destMACAddress=resolveDestMACAddress(),则只需移动两个函数sendBurstPackets()和scheduleNextPacket(simTime()),函数即可正常工作。这两个函数只调用一次 这是否意味着destMacAddress在整个模拟过程中设置一次 原始代码Omnet++ Omnet++;:更改函数的位置';I don’我没有按预期工作,omnet++,inet,Omnet++,Inet,实际上,我正在尝试编辑etherhost2函数以发送到多个目的地,并且我达到了仅第一次可以发送的程度 在原始代码中,如果条件为destMACAddress=resolveDestMACAddress(),则只需移动两个函数sendBurstPackets()和scheduleNextPacket(simTime()),函数即可正常工作。这两个函数只调用一次 这是否意味着destMacAddress在整个模拟过程中设置一次 原始代码 void EtherTrafGen::handleMessage
void EtherTrafGen::handleMessage(cMessage *msg)
{
if (!isNodeUp())
throw cRuntimeError("Application is not running");
if (msg->isSelfMessage()) {
if (msg->getKind() == START) {
destMACAddress = resolveDestMACAddress();
// if no dest address given, nothing to do
if (destMACAddress.isUnspecified())
return;
}
sendBurstPackets();
scheduleNextPacket(simTime());
}
else
receivePacket(check_and_cast<cPacket *>(msg));
}
void EtherTrafGen::handleMessage(cMessage*msg)
{
如果(!isNodeUp())
抛出cRuntimeError(“应用程序未运行”);
如果(msg->isSelfMessage()){
如果(msg->getKind()==START){
destMACAddress=resolveDestMACAddress();
//如果没有给出目的地地址,则无需执行任何操作
if(destMACAddress.isUnspecified())
返回;
}
sendBurstPackets();
ScheduleNextPackage(simTime());
}
其他的
接收数据包(检查和发送(msg));
}
我的变化
void EtherTrafGen::handleMessage(cMessage *msg)
{
if (!isNodeUp())
throw cRuntimeError("Application is not running");
if (msg->isSelfMessage()) {
if (msg->getKind() == START) {
if (!multipacket)
{
destMACAddress = resolveDestMACAddress();
sendBurstPackets();
scheduleNextPacket(simTime());
}
// if no dest address given, nothing to do
if (destMACAddress.isUnspecified())
return;
}
}
else
receivePacket(check_and_cast<cPacket *>(msg));
}
void EtherTrafGen::handleMessage(cMessage*msg)
{
如果(!isNodeUp())
抛出cRuntimeError(“应用程序未运行”);
如果(msg->isSelfMessage()){
如果(msg->getKind()==START){
如果(!多包)
{
destMACAddress=resolveDestMACAddress();
sendBurstPackets();
ScheduleNextPackage(simTime());
}
//如果没有给出目的地地址,则无需执行任何操作
if(destMACAddress.isUnspecified())
返回;
}
}
其他的
接收数据包(检查和发送(msg));
}
第一条消息仅适用于该条件(msg->getKind()==START),这意味着在整个模拟过程中为每个主机设置一次mac。消除这种情况使它起作用
我担心是否有其他自我信息可能与该功能错误。最好有一个单独的以太主机应用程序,只适用于我的模拟
如果知道如何查看所有自我信息,如果有人通知我,我将不胜感激。通常,自我信息在相应的
.h
文件中定义,并作为局部变量维护(即,每个模块一个实例)。这种编程模式对于定期执行操作(如信标或流量生成)的应用程序尤其常见。