1、目录结构

example:1、根文件下自带示例结构,作为良好的参考资源

2、src环境下中各模块中example作为资源

build: 编译后文件以及可执行文件

src:各模块源代码

2、新代码运行

将新脚本放在scratch文件夹中,该目录默认在waf编译环境内。可以通过直接编译./waf运行


first代码解析

拓扑:点对点网络---最简单

1 头文件

脚本通过各个模块提供的API进行网络模拟,每个模块的API放在“模块名-module.h”下。其中core与network为必须模块。另外,脚本中使用非ns3库中函数,也需要在这一步添加

#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/internet-module.h"
#include "ns3/point-to-point-module.h"
#include "ns3/applications-module.h"

2 名字空间

将ns3项目与非ns3项目分离。使用标准库函数需要添加std名字空间,如

using namespace ns3;

3 NS_LOG_COMPONENT_DEFINE

脚本使用宏定义打印辅助信息

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

4 int main()函数

读取命令行参数、设置模拟单元、开启log组件

  Time::SetResolution (Time::NS);LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);

5、网络拓扑创建

基本设置节点:Node

ns3中节点、信道、与节点中连接信道的网络设备分别对应于Node、Channel、NetDevice三个类(英文名字可以看出)。其中,信道与网络设备有着与之对应的多个子类。该网络中使用助手类构建网络(--Helper)。代码设置节点。设置PPP【点对点】的属性,并通过Install()在节点中安装设备。Install()返回NetDevice对象。

  NodeContainer nodes;nodes.Create (2);PointToPointHelper pointToPoint;pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));NetDeviceContainer devices;devices = pointToPoint.Install (nodes);

6、安装TCP/IP协议族

安装协议,其中包括:TCP和UDP。网络层的IP与路由协议

  InternetStackHelper stack;stack.Install (nodes);Ipv4AddressHelper address;address.SetBase ("10.1.1.0", "255.255.255.0");Ipv4InterfaceContainer interfaces = address.Assign (devices);

通过InternetStackHelper助手安装协议栈stack,并通过Intall(nodes)安装在节点中

IP地址通过AddressHelper设置并通过Assign()函数安装在节点中设备中。

7 安装应用程序

可以有不同的应用程序协议分发模块,first采用UdpEcho应用程序。

利用服务器助手,初始化监听9号端口。利用服务器助手将其安装在其中的一个节点中,编号为1,同样使用Install()函数,并设置在1s后启动,10s后结束。

  UdpEchoServerHelper echoServer (9);  ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));serverApps.Start (Seconds (1.0));serverApps.Stop (Seconds (10.0));

客户端助手接收来自1编号的IP地址,并从9号端口接收。MaxPackets、Interval、PacketSize分别对应echoClient的三个属性。为最大发送分组数、发送间隔与发送包裹大小(负载)。客户端安装在结点0中,在2s时开始,10s时结束。

  UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);echoClient.SetAttribute ("MaxPackets", UintegerValue (1));echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));echoClient.SetAttribute ("PacketSize", UintegerValue (1024));ApplicationContainer clientApps = echoClient.Install (nodes.Get (0));clientApps.Start (Seconds (2.0));clientApps.Stop (Seconds (10.0));

8、数据生成

first未涉及

9、启动与结束

  Simulator::Run ();Simulator::Destroy ();return 0;

执行之前定义的操作。Run()按顺序执行;Destroy()执行清除操作。


以上为first中所有操作,对于整体ns3把握还不完善。需要理解过程后进一步通过案例分析。

ns3入门案例1 first.cc相关推荐

  1. ns3 入门案例2:third.cc

    代码分析 1 头文件 #include "ns3/core-module.h" #include "ns3/point-to-point-module.h" # ...

  2. ns3入门(1)——第一个案例first.cc

    ns3入门(1)--第一个案例first.cc 一.安装ns3 安装没啥可说的,参考一下别人的网站吧. 说下我的环境吧,ubuntu16.04,仅此. 1.安装eclipse https://blog ...

  3. 语音分类入门案例: 英文数字音频分类

    语音分类入门案例: 英文数字音频分类 本项目是一个全流程的语音分类项目,内容简单,适合想要涉猎音频分类的小白学习. 推荐将本项目Fork成为自己的项目并运行,以获得更好的学习体验!! 项目地址:语音分 ...

  4. 2021年大数据Flink(八):Flink入门案例

    目录 Flink入门案例 前置说明 API 编程模型 准备工程 pom文件 log4j.properties Flink初体验 需求 编码步骤 代码实现 Flink入门案例 前置说明 API API ...

  5. Python:Scrapy的安装和入门案例

    Scrapy的安装介绍 Scrapy框架官方网址:http://doc.scrapy.org/en/latest Scrapy中文维护站点:http://scrapy-chs.readthedocs. ...

  6. Vue安装配置以及入门案例

    Vue Vue简介 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不 ...

  7. AOP配置开发入门案例

    该AOP开发入门案例采用XML文件方式配置开发(非注解方式)共包含一个xml文件和4个Java类,创建好web工程后引入相应jar包(文末会给出),建好包(若自定义包名注意更改类中的包名),将xml文 ...

  8. python与人工智能编程-总算明白python人工智能编程入门案例

    Python是非常简洁的一种脚本语言,写同样的程序,代码量仅为java的三分一,除了性能没有Java强之外,它的优点还是相当多的.以下是小编为你整理的python人工智能编程入门案例 下载Active ...

  9. mybatis基于注解的入门案例

    mybatis基于注解的入门案例:             把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句             同时需要在SqlMa ...

最新文章

  1. PostgreSQL参数优化对比性能测试
  2. 成功解决AttributeError: ‘str‘ object has no attribute ‘decode‘
  3. Oracle PL/SQL之LOOP循环控制语句
  4. C开源hash代码uthash的用法总结(1)
  5. Postman下载与安装
  6. htmlentities和htmlspecialchars 的区别
  7. 两种“新型”的javaweb后门(jspx和Java Logger)
  8. vue实例的参数说明
  9. JAVA项目面试总结 电商系统 OA办公系统 P2P网贷
  10. C语言课设-单位车辆调度管理
  11. 小米ui开发 android9,基于安卓10,小米9推送MIUI 10 9.8.22开发版
  12. During sturtup program exited with code 0xc0000139的解决办法!
  13. java饼图_java 百分比饼图的实现代码
  14. TCP拥塞控制和宽容
  15. 更改iTunes(macOS下)备份路径至移动硬盘
  16. Maven - 5、私服详解
  17. 基于3D视觉的三维人体重建方法漫谈
  18. 支持幻灯片演示的思维导图软件NovaMind_我是亲民_新浪博客
  19. 回溯法求解装载问题(DFS + 剪枝策略)
  20. 有哪些常见的游戏建模软件?游戏建模师的工作日常

热门文章

  1. Spring配置文件简介
  2. 使用JAX-RS和Spring构建HATEOAS API
  3. Java 8中Lambda表达式的阴暗面
  4. Drools:基于PHREAK堆栈的评估和向后链接
  5. ActiveMQ群集,持久订阅者和虚拟主题可助您一臂之力
  6. 用Java处理大文件
  7. Spring Batch中面向TaskletStep的处理
  8. 2字节十六进制浮点数 qt_Qt二进制文件操作(读和写)详解
  9. 位运算和进制转换,反码补码
  10. springboot redis token_Spring Boot + Redis + 注解 + 拦截器来实现接口幂等性校验