我在ns3的c ++中有以下代码,当接收到一个数据包以使用
打印其内容和到达时间时 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 received\n"
<< "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------------\n\n"
);
答案 0 :(得分:0)
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