首页 > 解决方案 > 如何在 omnet++ 中获取模型的节点?

问题描述

我创建了我的网络模型如下:

    httpController: HttpController {
        parameters:
            @display("is=s;p=98.8575,423.675;i=block/cogwheel");
    }

    host[numclients]: StandardHost;
    server1: StandardHost {
        @display("i=device/server;p=1400.145,223.94249");
    }

    server2: StandardHost {
        parameters:
            @display("i=device/server;p=1400.145,365.16748");
    }
    server3: StandardHost {
        parameters:
            @display("i=device/server;p=1400.145,488.235");
    }
    attacker1: StandardHost{
        parameters:
        @display("i=device/server;color=red");}
    attacker2: StandardHost{
         parameters:
        @display("i=device/server;color=red");}
    router0: Router {
        parameters:
            @display("i=abstract/router;p=1216.5525,365.16748");
    }
    router[numclients]: Router;
    visualizer: IntegratedCanvasVisualizer {
        @display("p=98.8575,254.205");
    }
    attacker1_router:Router;
    attacker2_router:Router;

我还在他们的类中创建了一个带有以下 c++ 函数的简单模块:

void CoIDS::askForHelp(){
cTopology topo;
const char *typeNames[3];
typeNames[0] = "router";
typeNames[1] = "host";
typeNames[2] = nullptr;
topo.extractByNedTypeName(typeNames);

此代码用于获取模型中的所有路由器和主机节点。问题是我在 topo.extractByNedTypeName(typeNames); 说 typeNames 中存在错误,有时与方法本身有关。你能帮我吗?任何人都会帮助它将不胜感激..

标签: omnet++inet

解决方案


extractByNedTypeName()定义为:

virtual void extractByNedTypeName (const std::vector<std::string>& nedTypeNames);

所以它需要std::vector,而不是字符数组。
参考:OMNeT++ 仿真库


推荐阅读