如何在ns3中跟踪节点的移动时间?

时间:2017-06-19 11:32:44

标签: c++ ns-3

基本上,我在NS3中使用了RandomwayPoint模型,我得到了这样的节点结果:

/NodeList/5/$ns3::MobilityModel/CourseChange x = 10, y = 20
/NodeList/6/$ns3::MobilityModel/CourseChange x = 30, y = 40
/NodeList/7/$ns3::MobilityModel/CourseChange x = 50, y = 80
/NodeList/5/$ns3::MobilityModel/CourseChange x = 10, y = 20
/NodeList/6/$ns3::MobilityModel/CourseChange x = 30, y = 40
/NodeList/7/$ns3::MobilityModel/CourseChange x = 50, y = 80
/NodeList/5/$ns3::MobilityModel/CourseChange x = 10, y = 20
/NodeList/6/$ns3::MobilityModel/CourseChange x = 30, y = 40
/NodeList/7/$ns3::MobilityModel/CourseChange x = 50, y = 80
At time 2s client sent 1024 bytes to 10.1.2.4 port 9
At time 2.01596s server received 1024 bytes from 10.1.3.3 port 49153
At time 2.01596s server sent 1024 bytes to 10.1.3.3 port 49153
At time 2.02464s client received 1024 bytes from 10.1.2.4 port 9
......

但是如何记录每个节点的移动时间? 我认为最相关的代码是关于使用Simulator:: Now().GetSeconds() 这是我写的代码:

     std::ostringstream oss2(std::ostringstream::ate);
     oss2.str("TimeStamp:");
     oss2 << Simulator::Now().GetSeconds ();
     std::cout << oss2.str() << "\t";

但我得到的结果等于0。我对此感到困惑,如果有人能为我提供更好的解决方案并帮助我解决这个问题,我将不胜感激。

ManyThanks。

1 个答案:

答案 0 :(得分:0)

逻辑正确,Simulator::Now()提供时间。你可以用一行打印,不需要四行!

std::cout << "TimeStamp:" << Simulator::Now().GetSeconds() << "\t";

事实上你得到t = 0秒,可能是因为节点之后没有“改变”。 CourseChange回调仅在速度或速度(方向)发生变化时触发。如果节点以恒定速度移动,则不会触发。

根据您之前post中的评论,您说您已使用过ListPositionAllocator。如果列表中只有一个条目,那么它将不会在t = 0(你在输出中看到的)的初始值之间发生变化。