NS3实例分析(1)-- hello-simulator.cc

这一节,我们就NS3第一个例子,也是最简单的例子hello 开始学习。

以下是 hello-simulator.cc 的源码:

---------------------------------------------------------------------------------------

#include "ns3/core-module.h"

//声明了一个叫HelloSimulator的日志构件,通过引用HelloSimulator这个名字的操作,

//可以实现打开或者关闭控制台日志的输出。

NS_LOG_COMPONENT_DEFINE ("HelloSimulator");

using namespace ns3;                    //namespace的声明

int main (int argc, char *argv[])

{

NS_LOG_UNCOND ("Hello Simulator");    //无条件记录相关消息

}

---------------------------------------------------------------------------------------------

./waf 编译后,运行 ./waf --run hello-simulator.cc, 结果如下:

本例子很简单,相信有一些C++基础的朋友都很快理解,接下来借该例子再分析一下两点NS3特有的性质。

1、头文件

在编译的过程中,每一个ns-3的include文件被放在build目录下一个叫ns3的目录中,这样做可以避免include文件名的冲突。如果你查看ns3目录会发现大量的头文件。

2、日志

Ns3提供了一个可供选择的、多级别的方法来记录日志。日志可以完全被禁用,或仅对部分组件可用,或全局可用。并且ns3提供了不同详尽程度的日志级别供选。NS-3日志模块提供了直观的、相对简单的使用方法来帮助用户获得仿真过程的所需信息。

在现有的系统中,有7个详尽程度递增的日志级别,他们分别是:

?   NS_LOG_ERROR — Log error messages;

?   NS_LOG_WARN — Log warning messages;

?   NS_LOG_DEBUG — Log relatively rare, ad-hoc debugging messages;

?   NS_LOG_INFO — Log informational messages about program progress;

?   NS_LOG_FUNCTION — Log a message describing each function called;

?   NS_LOG_LOGIC – Log messages describing logical flow within a function;

?   NS_LOG_ALL — Log everything.

?   NS_LOG_ERROR — 记录错误信息;

?   NS_LOG_WARN — 记录警告信息;

?   NS_LOG_DEBUG — 记录相对不常见的调试信息;

?   NS_LOG_INFO — 记录程序进展信息;

?   NS_LOG_FUNCTION — 记录描述每个调用函数信息;

?   NS_LOG_LOGIC – 记录一个函数内描述逻辑流程的信息;

?   NS_LOG_ALL — 记录所有信息.

我们也提供了一种一直被使用的无条件日志级别,它是跟日志详尽级别或是组件选择无关的。

?   NS_LOG_UNCOND – 无条件记录相关消息.

每一个级别能够被单独地被调用或逐级递增的被调用。

本人也是刚开始学习,有什么地方不对,请各位朋友多多指正,互相学习才能共同进步。

时间: 2024-10-12 13:52:08

NS3实例分析(1)-- hello-simulator.cc的相关文章

NS3实例分析(4)-- third.cc

这一节主要是分析第三个例子 third.cc. 该例子包含了P2P信道,以太信道和WiFi信道. 网络拓扑如下: // Default Network Topology // //   Wifi 10.1.3.0 //                 AP //  *    *    *    * //  |    |    |    |    10.1.1.0 // n5   n6   n7   n0 -------------- n1   n2   n3   n4 //           

NS3实例分析(3)-- second.cc

这一小节我们来看看第三个例子,这个例子应用了一个P2P信道和一个实现CSMA的以太信道. 网络拓扑如下: // Default Network Topology // //       10.1.1.0 // n0 -------------- n1   n2   n3   n4 //    point-to-point  |    |    |    | //                    ================ //                      LAN 10.

NS3实例分析(2)-- first.cc

这一节我们开始分析第二个例子 first.cc .网络拓扑就下所示: // Default Network Topology // //       10.1.1.0 // n0 -------------- n1 //    point-to-point // // 这是一个P2P模型.我们接着来看看NS3的具体实现: ----------------------------------------------------------------------------------------

句柄泄露实例分析

句柄泄露实例分析 在上篇文章.NET对象与Windows句柄(二):句柄分类和.NET句柄泄露的例子中,我们有一个句柄泄露的例子.例子中多次创建和Dispose了DataReceiver和DataAnalyzer对象,但由于忘记调用DataAnalyzer的Stop方法,导致产生句柄泄露.本文假定我们已经发现了泄露现象但还不知道原因,讨论如何在这种情况下分析问题. 一.发现问题 在程序运行约一个小时以后,通过任务管理器发现句柄数超过5000,线程数也超过1000.对于一段只需要并行接收和分析数据

Android漫游记(5)---ARM GCC 内联汇编烹饪书(附实例分析)

原文链接(点击打开链接) 关于本文档 GNU C编译器针对ARM RISC处理器,提供了内联汇编支持.利用这一非常酷炫的特性,我们可以用来优化软件代码中的关键部分,或者可以使用针对特定处理的汇编处理指令. 本文假定,你已经熟悉ARM汇编语言.本文不是一篇ARM汇编教程,也不是C语言教程. GCC汇编声明 让我们从一个简单的例子开始.下面的一条ARM汇编指令,你可以添加到C源码中. /* NOP example-空操作 */ asm("mov r0,r0"); 上面的指令,讲r0寄存器的

一些有用的javascript实例分析(一)

原文:一些有用的javascript实例分析(一) 本文以http://fgm.cc/learn/链接的实例索引为基础,可参见其实际效果.分析和整理了一些有用的javascript实例,相信对一些初学者有一定的帮助.本人水平有限,有许多不足的地方还望包涵,指正.废话不多说,正文以代码开始,不在代码中死去,就在代码中重生.不经历码农,如何来做攻城狮. 1 1 控制div属性 2 //参数为对象,样式属性和值 3 var changeStyle=function(elem,attr,value){

【OpenGL】Shader实例分析(七)- 雪花飘落效果

转发请保持地址:http://blog.csdn.net/stalendp/article/details/40624603 研究了一个雪花飘落效果.感觉挺不错的.分享给大家,效果例如以下: 代码例如以下: Shader "shadertoy/Flakes" { // https://www.shadertoy.com/view/4d2Xzc Properties{ iMouse ("Mouse Pos", Vector) = (100,100,0,0) iChan

Apache漏洞利用与安全加固实例分析

Apache 作为Web应用的载体,一旦出现安全问题,那么运行在其上的Web应用的安全也无法得到保障,所以,研究Apache的漏洞与安全性非常有意义.本文将结合实例来谈谈针对Apache的漏洞利用和安全加固措施. Apache HTTP Server(以下简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,是最流行的Web服务器软件之一.虽然近年来Nginx和Lighttpd等Web Server的市场份额增长得很快,但Apache仍然是这个领

java基础学习05(面向对象基础01--类实例分析)

面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过setter和getter设置和取得4.如果需要可以加入若干构造方法 5.再根据其它要求添加相应的方法6.类中的所有方法都不要直接输出,而是交给被调用处调用 Demo 定义并测试一个名为Student的类,包括属性有"学号"."姓名"以及3门课程"数学".