我想在 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]"