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

Omnet++ Omnet ini配置文件-为每个节点设置随机目标,omnet++,inet,Omnet++,Inet,我想在Udp基本应用程序中为100个节点的数组设置随机目标 *.host[*].udpApp[0].destAddresses = "host[${intuniform(0,99)}]" 我需要所有源节点选择一个随机目的地并开始发送流量。但omnet++在上述语句中给出了错误。已经试过了 *.host[*].udpApp[0].destAddresses=“host[${0..99}]”但它只是为1次模拟运行的所有节点选择第一个节点。您无法通过这种方式实现目标,因为根据INI文件: 变量以文本

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

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

您无法通过这种方式实现目标,因为根据INI文件:

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

事实上,不需要使用值
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]"

您无法通过这种方式实现目标,因为根据INI文件中的:

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

事实上,不需要使用值
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]"