Omnet ini 配置文件 - 为每个节点设置随机目标



我想在 Udp 基本应用程序中为 100 个节点的数组设置随机目的地

*.host[*].udpApp[0].destAddresses = "host[${intuniform(0,99)}]"

我需要对所有源节点选择一个随机目标并开始发送流量。但是omnet++在上面的语句中给出了错误。已经尝试过*.host[*].udpApp[0].destAddresses = "host[${0..99}]"但它只是为所有节点选择 1 个模拟运行的第一个节点。

您无法以这种方式实现目标,因为根据 INI 文件中的 OMNeT++ 仿真手册:

变量以文本方式替换,结果通常不作为算术表达式进行计算。

事实上,对destAddresses值进行操作是不必要的,因为UDP Basic App确实从destAddresses中给出的集合中随机选择目标地址。在UdpBasicApp.cc中看一下该方法:

L3Address UdpBasicApp::chooseDestAddr()
{
int k = intrand(destAddresses.size());
if (destAddresses[k].isUnspecified() || destAddresses[k].isLinkLocal()) {
L3AddressResolver().tryResolve(destAddressStr[k].c_str(), destAddresses[k]);
}
return destAddresses[k];
}

您应该做的是将所有主机添加到destAddresses.例如,假设网络中有五个主机:

*.host[*].udpApp[0].destAddresses = "host[0] host[1] host[2] host[3] host[4]"