omnet ++ — как зарегистрироваться и использовать хук в c ++?

Мне нужно построить сеть AODV, которая обменивается пакетами UDP. Один из его хостов должен иметь возможность воспроизводить полученный пакет, поэтому я модифицирую udpBasicApp.cc в omnet++ Инет рамки. Я пытаюсь сослаться на конкретного хоста внутри класса udpBasicApp указать определенное поведение для хоста [3] при получении пакета.
например.:

if(host->getIndex()== 3)
{ //replay the received packet }

По-видимому, я не могу сослаться ни на один элемент моей сети в предыдущем простом вопросе. Там нет функции внутри udpBasicApp.cc который может получить индекс текущего хоста. Мне посоветовали использовать механизм подключения, чтобы иметь возможность доступа к индексу текущего хоста с помощью приложения: udpBasicApp Как это сделать с помощью крюкового механизма?

Второй связанный вопрос, если я не могу обратиться к индексу хоста внутри udpBasicApp.ccкак сравнить IP-адрес текущего хоста хотя бы с IP-адресом, на который я пытаюсь сослаться?

IPXAddress srcAddr;
if (srcAddr=="host[3]")

несопоставимо, как показывает ошибка.

1

Решение

1. Чтобы получить индекс StandardHost из вектора вы должны обратиться к родительскому модулю udpApp:

if (getParentModule()->getIndex() == 3) {
// ...
}

2. IPv4-адрес текущего хоста может быть получен с помощью L3AddressResolver учебный класс:

#include "inet/networklayer/common/L3AddressResolver.h"
// ...
L3Address layer3addr = L3AddressResolver().addressOf(getParentModule(),
L3AddressResolver::ADDR_IPv4);
IPv4Address ownaddr = layer3addr.toIPv4();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]