Допустим, у меня есть два узла, один отправляет пакет другому узлу. Как рассчитать расстояние между ними, используя время? Я почти уверен, что должен использовать формулу расстояние = скорость * время, которой я являюсь. Мой код выглядит следующим образом:
Node1. cc
socket.sendTo(payload, destAddr, destPort);
auto const result = SEND_TIME_HISTORY.insert(std::make_pair(numSent, simTime().dbl()));
if (not result.second) {
result.first->second = simTime().dbl();
}
То, что в основном происходит при каждой отправке пакета, сохраняет текущий simTime и порядковый номер. внутри карты, так что я уверен, что я вычисляю из правильной последовательности пакетов
Node2. cc
map<int, double> SENT_TIME_HISTORY =
Node1->returnTimeHistory(); //basicaly retrieve the map
for (std::map<int, double>::iterator iter = SENT_TIME_HISTORY.begin();
iter != SENT_TIME_HISTORY.end(); iter++) {
//iterate through and check if the received sequence number matches the sent sequence number
if (rcvseq == iter->first){
//host_currenttime is simTime().dbl() as soon as the packet is received
timediff = host_currenttime - iter->second;
cout << "Time received: " << host_currenttime << "\tTime sent: " << iter->second <<"\tActual time taken" << timediff << endl;
}
}
cout << "Calculated distance: " << timediff*299792458 << endl;
В основном вывод - rubbi sh , Прямо сейчас я беру время, необходимое для отправки пакета, умноженное на скорость света, чтобы определить расстояние. Я что-то здесь не так делаю?
Если требуется больше исходного кода, пожалуйста, сообщите мне. Заранее спасибо!