NS3 学习的一些方法
在线文档
网址:https://www.nsnam.org/doxygen/index.html
该网址是NS3的在线文档,包含API说明,属性,类,模块,命名空间等,查找起来非常方便。
离线文档
在下载好的ns3目录下,使用命令:
./waf --doxygen
即可在本地生成离线的文档,在doc目录下面生成。该文档与上述文档一样,只不过是在电脑本地生成,不依赖与网络,随时查看。
缺点:生成得到离线文档非常大,如果是双系统情况,ubuntu配置的不够大的话,打开会比较费劲。
建议ubuntu分配空间大一些,50G左右,还有就是生成离线文档之后,把路径记下来,用浏览器使用路径打开,不要每次打开的时候,进入doc目录,这样会方便一些。
系统自带全局值

图中列举了系统默认配置的全局值,全局值在代码运行的过程中,该值都可以获取,并且能够设置。
当然,也可以添加自己的全局值。
具体使用,可以参看我的另一篇文章NS3 GlobalValue类API以及使用说明
属性列表

图中列举了NS3的全部可以使用的属性,并且按类分割,使用起来也很方便。
类索引

类索引给我们查找某一个类非常方便,这个是经常使用的功能。
类描述

从类索引中查找Ipv4Interface类,可以看到类的简单描述和类继承关系。
可以简单了解类的实现功能和类的集成关系,父类、子类等。
类说明

点击上面类描述中的More..,可以跳转到类说明部分。
在类说明部分有类的描述的详细信息、属性配置路径、属性列表等。
类描述说明类的功能。
类的属性配置路径,对于我们使用Config类来配置属性值非常方便。
属性列表列举了类中可以配置的属性,属性值都可以通过上面的属性配置路径进行配置。
另外,还有一个跟踪源,Ipv4Interface类中没有跟踪源,就是Trace,也可以通过Config类来进行配置。
具体使用,请参看我的另一篇文章NS3 Config类API说明
方法说明

方法说明部分给出了参数说明,另外一个重要的部分就是该方法在哪些代码中进行了调用,都可以通过下面的调用图中看出来。
这是与其他API文档不同的。
我们在学习NS3的过程中,需要知道方法的跳转过程,从那个方法调转到那个方法,并且NS3中大量的回调功能的设置,方法调转过程复杂,从上面的方法调用图中就可以看出,是代码的哪个类的哪个方法调用了该方法。
从上面的图中就可以看出,ns3::Ipv4L3Protocol::Send方法调用了ns3::Ipv4Interafce::Send方法和ns3::Ipv4L3Protocol::SendRealOut方法。同时ns3::Ipv4L3Protocol::SendRealOut方法又调用了ns3::Ipv4Interafce::Send方法。
配置eclipse
NS3使用waf进行编译的,如果没有图形界面是在不方便,所以最好的方式就是eclipse中配置NS3,用eclipse来写代码并调试。
另外,eclipse运行NS3的过程中,大家可能写了自己的代码运行,运行过程中,可能会出现无缘无故停止了,一个很大的可能就是自己写的代码中出现了空指针。因为c++没有像Java那样,出现空指针异常的时候会输出异常栈信息流,NS3出现空指针直接退出了,没有任何的提示信息。所以这个时候就用到了eclipse的Debug来进行调试。