Omnet++ 通过特定路径发送消息

Omnet++ 通过特定路径发送消息,omnet++,Omnet++,我是Omnet++的新手,正在构建我的第一个网络,其中消息必须经过特定的路径。下面是我正在使用的示例网络的简化版本 当收到请求时,它必须通过特定的路径。例如A->B->E->D->E->C 我的问题出现在与盖茨打交道时。我的第一反应是创建一个特定于每个模块之间连接的inout门。因此,A->B将有自己的inoutgate,B->E将有自己的inoutgate,等等。然而,随着网络的发展,这将导致需要管理大量的gate 我的第二次尝试是创建和inoutgates数组。我的联系方式如下:

我是Omnet++的新手,正在构建我的第一个网络,其中消息必须经过特定的路径。下面是我正在使用的示例网络的简化版本

当收到请求时,它必须通过特定的路径。例如A->B->E->D->E->C

我的问题出现在与盖茨打交道时。我的第一反应是创建一个特定于每个模块之间连接的
inout
门。因此,A->B将有自己的
inout
gate,B->E将有自己的
inout
gate,等等。然而,随着网络的发展,这将导致需要管理大量的gate

我的第二次尝试是创建和
inout
gates数组。我的联系方式如下:

    A.nodeGates++ <--> B.nodeGates++;
    A.nodeGates++ <--> C.nodeGates++;
    A.nodeGates++ <--> D.nodeGates++;
    C.nodeGates++ <--> E.nodeGates++;
    B.nodeGates++ <--> E.nodeGates++;
    D.nodeGates++ <--> E.nodeGates++;
A.nodeGates++B.nodeGates++;
A.nodeGates++C.nodeGates++;
A.nodeGates++D.nodeGates++;
C.nodeGates++E.nodeGates++;
B.nodeGates++E.nodeGates++;
D.nodeGates++E.nodeGates++;
在cpp文件中,我会调用
send(msg,“nodeGates$o”,indexId)在my
handleMessage
函数中。是否有方法根据模块名称映射indexId?例如,当我在模块A时,对于路由A->B->E->D->E->C,我会动态地找到从A到B的indexId。一旦到了B,我会找到到E的indexId,依此类推


有没有一种方法可以在两个节点之间动态查找indexId以遵循精确的路由?

在给定的输出上
gate
可以调用
getPathEndGate()
,这将为您提供连接远端的gate。在该门上调用
getOwnerModule()
将为您提供远端的模块,然后在该模块上调用
getFullName()
将为您提供该模块的名称。通过这种方式,您可以获得连接到给定输出门的模块的名称。您可以根据这些信息做出路由选择

gate("nodeGates$o", indexId)->getPathEndGate()->getOwnerModule()->getFullName()
见:


还请注意,您必须实现源路由,即在创建数据包时,您必须将数据包的所需路径存储在数据包本身中,并且在每个跃点上,节点必须从该列表中删除一个跃点,并根据下一个所需节点进行路由决策。这样,数据包将通过指定的路径并在最终目的地结束。

在给定的输出上
可以调用
getPathEndGate()
,这将为您提供连接远端的门。在该门上调用
getOwnerModule()
将为您提供远端的模块,然后在该模块上调用
getFullName()
将为您提供该模块的名称。通过这种方式,您可以获得连接到给定输出门的模块的名称。您可以根据这些信息做出路由选择

gate("nodeGates$o", indexId)->getPathEndGate()->getOwnerModule()->getFullName()
见:


还请注意,您必须实现源路由,即在创建数据包时,您必须将数据包的所需路径存储在数据包本身中,并且在每个跃点上,节点必须从该列表中删除一个跃点,并根据下一个所需节点进行路由决策。这样,数据包将通过指定的路径并在最终目的地结束。

谢谢,这正是我要找的!谢谢,正是我想要的!