Вычислить время получения пакета в ns3

#c #time #packet #ns-3

#c #время #пакет #ns-3

Вопрос:

У меня есть следующий код на c в ns3, используемый при получении пакета для печати его содержимого и времени его прибытия с использованием

     Simulator::Now ().GetSeconds() 
  

но каждый раз он превращается в нули. Кто-нибудь может сказать мне, почему? и как я могу получить реальное время?

 Ptr<const Packet> p = packet;
LrWpanMacHeader h;
p->PeekHeader(h); //remove the header in order to print packet 
    content, so that's why the size differ between packet and p
    BasicPacketData bpd (p);
std::cout<<"Packet Size:"<<p->GetSize()<<std::endl;
uint8_t *buffer = new uint8_t[p->GetSize()];
p->CopyData (buffer, p->GetSize());
std::string receivedData(buffer, buffer p->GetSize ());
std::cout<<"Received:"<<receivedData.c_str()<<std::endl;


if(!h.IsAcknowledgment()) //Returns true if the header is an ack
{

    NS_LOG_UNCOND ("----------Packet received----------n"
            << "Packet of size " << bpd.size << " bytes receivedn"
            << "on device with address "<< dev3->GetMac()->GetShortAddress()<<"n"
            << "was sent from address " << dev->GetMac()->GetShortAddress() << "n"
                           // << "on device with address "<< bpd.dst<<"n"
            //<< "was sent from address " << bpd.src << "n"
            << "sequence number is " << (int) bpd.seq_nr << "n"
            << "PAN ID is " << bpd.pan_id << "n"
                            <<"with time "<< " on time: " << Simulator::Now ().GetSeconds() <<    "s"
            << "----------Packet received------------nn"

    );
  

Ответ №1:

Метод ns3::Packet::Print предназначен для печати содержимого пакета:

https://www.nsnam.org/doxygen/classns3_1_1_packet.html#ad25486a838ac04533c83ff600d84546f

Теперь вы видите нули, вероятно, потому, что пакет был инициализирован фиктивной полезной нагрузкой, состоящей из байтов, содержащих нули. Смотрите:

https://www.nsnam.org/doxygen/classns3_1_1_packet.html#a897aab15901dcf1f05f075db7b8d04b1