Мне нужно построить сеть 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. Чтобы получить индекс 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();
Других решений пока нет …