我想在Udp基本应用程序中为100个节点的数组设置随机目的地
*.host[*].udpApp[0].destAddresses = "host[${intuniform(0,99)}]"
我需要所有源节点选择一个随机目标并开始发送流量。但是omnet ++在上述声明中给出了错误。已经尝试过*.host[*].udpApp[0].destAddresses = "host[${0..99}]"
,但只为所有节点选择1个模拟运行的第一个节点。
您无法以这种方式实现目标,因为根据INI文件中的OMNeT++ Simulation Manual:
将变量按文本替换,结果通常不作为算术表达式求值。
事实上,不需要使用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]"