Network programming omnet+中的正确索引+;
在omnet++中,在omnetpp.ini文件中这样的索引是否可以:Network programming omnet+中的正确索引+;,network-programming,omnet++,Network Programming,Omnet++,在omnet++中,在omnetpp.ini文件中这样的索引是否可以: *.Member[0].numTcpApps = 2 *.Member[1..numberOfMembers].numTcpApps = 1 参数numberOfMembers已在.ned文件中指定为常用整数变量。它被初始化为某个值,例如10 如果mynumberOfMembers变量仅设置为1,会发生什么情况。在这种情况下,我应该只有一个成员(成员[0])。那么.ini文件的第二个条目会发生什么变化 不能在omnetpp
*.Member[0].numTcpApps = 2
*.Member[1..numberOfMembers].numTcpApps = 1
参数numberOfMembers
已在.ned文件中指定为常用整数变量。它被初始化为某个值,例如10
如果my
numberOfMembers
变量仅设置为1,会发生什么情况。在这种情况下,我应该只有一个成员(成员[0]
)。那么.ini文件的第二个条目会发生什么变化 不能在omnetpp.ini
中使用NED参数的值。但是,您可以在omnetpp.ini
中实现您的目标
假设网络在.ned
中定义为:
network ExampleNetwork
{
parameters:
int numberOfMembers;
submodules:
Member[numberOfMembers] : SomeMemberType;
// ...
}
然后在omnetpp.ini中可以控制网络。例如,要仅为成员[0]
设置numTcpApps=2
,并为所有其他子模块设置numTcpApps=1
,应编写:
*.numberOfMembers = 10
*.Member[0].numTcpApps = 2
*.Member[*].numTcpApps = 1 # i.e. Member[1], Member[2], ..., Member[9]
注意omnetpp.ini中条目的顺序,因为:
对于通配符,条目的顺序非常重要。当一个键匹配多个通配符模式时,将使用第一个匹配项
因此,条目的顺序如下:
*.numberOfMembers = 10
*.Member[*].numTcpApps = 1 # i.e. Member[0], Member[1], Member[2], ..., Member[9]
*.Member[0].numTcpApps = 2
将为所有子模块设置
numTcpApps=1
。最后一行不被考虑,因为成员[0]
已经由条目成员[*]
设置了非常感谢Jerzy D!!我不知道顺序对通配符有多重要。因此,您说不能在.ini中使用NED参数的值,但在.ini中使用*.numberOfMembers
可以在.NED中设置此NED参数?是的。omnetpp.ini
文件是应该(甚至必须)为NED中定义的每个参数设置值的地方,例如*.numberOfMembers=10
。但是,不能使用其他参数的值在omnetpp.ini
中设置参数,因此我们不能写入:*。otherNedParameter=numberOfMembers
。