在omnet ++中正确索引

时间:2018-07-24 20:26:19

标签: network-programming omnet++

在omnet ++中,可以这样在omnetpp.ini文件中建立索引是可以的:

*.Member[0].numTcpApps = 2
*.Member[1..numberOfMembers].numTcpApps = 1

已在.ned文件中将参数numberOfMembers指定为通常的整数变量。它被初始化为某个值,例如10.

如果将我的numberOfMembers变量设置为仅1,会发生什么情况。在这种情况下,我应该只有一个成员(Member[0])。那么,.ini文件的第二个条目会怎样?

1 个答案:

答案 0 :(得分:1)

一个人不能使用omnetpp.ini中的NED参数的值。但是,您可以使用omnetpp.ini中的wildcard patterns实现您的目标。

我们假设在.ned中将网络定义为:

network ExampleNetwork
{
    parameters:
        int numberOfMembers;
    submodules:
        Member[numberOfMembers] : SomeMemberType;
    // ...
}

然后omnetpp.ini中的一个可以控制网络。例如,只为numTcpApps = 2设置Member[0],为所有其他子模块设置numTcpApps = 1,则应写:

*.numberOfMembers = 10
*.Member[0].numTcpApps = 2
*.Member[*].numTcpApps = 1   # i.e. Member[1], Member[2], ..., Member[9]

请注意omnetpp.ini中的条目顺序,因为:

  

通配符的输入顺序非常重要。当键与多个通配符模式匹配时,将使用 first 匹配项。

因此,输入顺序如下:

*.numberOfMembers = 10
*.Member[*].numTcpApps = 1   # i.e. Member[0], Member[1], Member[2], ..., Member[9]
*.Member[0].numTcpApps = 2   

将为所有子模块设置numTcpApps = 1。由于条目Member[0]已设置Member[*],因此不考虑最后一行。