c++ - 模块不在节点内(节点必须由 ned 模块中的@node 属性标记)

标签 c++ omnet++

每当我运行 OMNet++ 模拟时,它都会给我一个运行时异常

" Error in module (cModule) CompleteScenarioIncludingGateway (id=1) during network initialization: Module is not inside a Node (Node must be marked by @node property in ned module)."

我想知道这是什么意思以及如何解决。

最佳答案

代表网络中节点的每个模块(例如主机、路由器)都应标有@node 属性(在最新版本的 INET 中,它被称为@networkNode 而不是@node)。这是在 INET 的 NodeBase.ned 中是如何完成的:

module NodeBase like INetworkNode
{
    parameters:
        @networkNode
        @display("bgb=,448");
        ...

@networkNode 实际上是一个标记,因此放置在节点内的任何模块都可以在模块父链中向上移动,并找到哪个模块代表它所在的实际主机。这有助于主机内的模块更容易导航。例如,如果一个模块对主机的物理位置感兴趣,它开始在模块链上向上移动并每次检查该模块是否具有@networkNode 属性。如果是,那么按照惯例,它应该有一个名为“mobility”的子模块,可用于检索位置。

关于c++ - 模块不在节点内(节点必须由 ned 模块中的@node 属性标记),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35897157/

相关文章:

c++ - 如何在 omnet++ 中使用 AODV 协议(protocol)实现重放攻击?

c++ - 错误 - 无法访问用于在 Omnet 中创建新节点的显示字符串

java - Omnet++ 中的模拟时间

c++ - 他们如何在没有显式模型(又名概念图)的情况下避免基于概念的重载问题

c# - 如何创建包含 const 内容的 C# 列表?

c++ - 无效传输率错误

omnet++ - 更改静脉中的 WSM(WAVE 短消息)数据包大小

c++ - 如何在 C++ 的二维字符数组中输入不同长度的字符串?

c++ - vector 析取

c++ - 多线程使用者使用boost ringbuffer不产生与输入相同的输出