Как я могу получить cTopology в omnet ++?

Я хочу получить список соседних адресов (узлов, находящихся в диапазоне передачи). Я нашел этот код в руководстве по omnet ++, но когда я компилирую, я получаю сообщение об отсутствии члена с именем «extractByModuleType» в «cTopology», я вернулся к классу cTopology, а функция «extractByModuleType ()» не существует. Я пробовал другие функции, но у меня ничего не вышло. Пожалуйста, если кто-то знает, как получить доступ к cTopology, ответьте на мой вопрос.

С наилучшими пожеланиями;

cTopology topo;
topo.extractByModuleType("Host", nullptr);
for (int i = 0; i < topo.getNumNodes(); i++) {
  cTopology::Node *node = topo.getNode(i);
  EV << "Node i=" << i << " is " << node->getModule()->getFullPath() << endl;
  EV << " It has " << node->getNumOutLinks() << " conns to other nodes\n";
  EV << " and " << node->getNumInLinks() << " conns from other nodes\n";

  EV << " Connections to other modules are:\n";
  for (int j = 0; j < node->getNumOutLinks(); j++) {
    cTopology::Node *neighbour = node->getLinkOut(j)->getRemoteNode();
    cGate *gate = node->getLinkOut(j)->getLocalGate();
    EV << " " << neighbour->getModule()->getFullPath()
       << " through gate " << gate->getFullName() << endl;
  }
}

person Bouchra BOUNAB    schedule 09.05.2019    source источник


Ответы (1)


Которые должны быть

topo.extractByNedTypeName("Host");

согласно документации.

Кроме того, вы указываете, что хотите получить список узлов в «диапазоне передачи». Предположительно, у вас есть беспроводная сеть, в которой нет соединений между узлами. cTopology обнаруживает топологию на основе подключений, а в беспроводной сети их нет, поэтому вы в любом случае не получите значимых результатов.

Если только ваши узлы не движутся, и вы фактически не создаете соединение между соседними узлами. Этот ТАК ответ, я дам вам помощь, как это сделать: Повторно подключайте узлы на основе их евклидова расстояния в omnet ++

Если вы их подключите, вам просто нужно будет перебрать все свои подключения, чтобы добраться до соседних узлов, и вам не понадобится никакой магии cTopology.

person Rudi    schedule 09.05.2019
comment
Спасибо за ответ, я понимаю, что я не могу получить адреса соседей с помощью cTopology, так как у меня есть беспроводная сенсорная сеть. Вы предлагаете решение, но в котором узлы не двигаются. Не могли бы вы предоставить решение для получения списка соседей в случае мобильной беспроводной сенсорной сети. - person Bouchra BOUNAB; 09.05.2019
comment
Пожалуйста. Если у вас есть дополнительные вопросы, сформулируйте их как отдельный вопрос. В соответствии с политикой в ​​отношении переполнения стека вы не должны задавать другой вопрос в разделе комментариев. Причина в том, что вся дискуссия станет неструктурированной. Кроме того, если ответ на данный вопрос приемлем, вы должны подать сигнал и принять его, чтобы его увидели и другие пользователи. - person Rudi; 14.05.2019