4、Ns3的实例 first.cc

/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */

/*

* This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License version 2 as

* published by the Free Software Foundation;

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software

* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*/

//在编译过程每个ns-3的include文件被放在build目录下一个叫ns3的目录中,防止和include文件名的冲突。ns3/core-module.h与src/core目录下的ns-3模块相对应。当编译时,waf会根据配置在ns-3目录下的公共头文件放到build/debug或者build/optimized目录下。Waf也会自动产生一个模块include文件来加载所有的公共头文件。

#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"

using namespace ns3;

//可以搜索ns-3.19/doc/html/index.html页面的搜索看定义,主要是生成日志。直接在浏览器中打开路径:home/tempal/eclipse/ns-allinone-3.19/ns-3.19/doc/html/index.html,可以搜索。

NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");

int

main (int argc, char *argv[])

{

Time::SetResolution (Time::NS);

//将“Udpcho”应用程序的客户端和服务器的日志级别设为“INOF”级。

LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);

LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);

//生成网络节点,NodeContainer是ns-3的一个Helper类,可以一次操作多个节点。

NodeContainer nodes;

nodes.Create (2);

//ns-3中将对应的物理实体抽象为网络设备和信道2个概念。下面的语句就实现了网络节点物理连接。其中PointToPointHelper 设置网络设备和信道属性,并通过Install方法把设备安装到节点中。信道和网络设备是对应的,比如以太网和无线信道就不能一起使用。

PointToPointHelper pointToPoint;

pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));

pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

//设备容器

NetDeviceContainer devices;

devices = pointToPoint.Install (nodes);//会有2个节点,每一个节点在安装了点到点网络设备,在它们之间是一个点到点信道。2个节点会被配置在一个有2ms传输延时的信道上以5Mbit/s的速率传输数据

//为计算机安装协议栈

InternetStackHelper stack;

stack.Install (nodes);

Ipv4AddressHelper address;

address.SetBase ("10.1.1.0", "255.255.255.0");//ns3中地址分配默认是从1开始并单调增长。

Ipv4InterfaceContainer interfaces = address.Assign (devices);

//安装服务器端应用程序、设置端口号

UdpEchoServerHelper echoServer (9);

//这里有个C++隐式转换,以转换以node.Get(1)作为结果输入。将会在管理节点Nodeontainer容器索引号为1的节点上安装一个UdpEchoServerApplication,安装会放回一个容器,这个容器中包含了指向所有被组手创建的应用指针。

ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));

serverApps.Start (Seconds (1.0));

serverApps.Stop (Seconds (10.0));

//设置客户端的端口为9

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));

Simulator::Run ();

Simulator::Destroy ();

return 0;

}

运行eclipse,输入first,可以得到以下的结果截图。

4、Ns3的实例 first.cc

时间: 2024-11-09 09:06:58

4、Ns3的实例 first.cc的相关文章

ns-3 的下载、编译以及 Eclipse 的相关配置

0. 写在前面 对于初次接触Linux系统的人来说,ns-3 的安装似乎并不友好.但其实仅仅要按部就班地来做,其安装过程也没有看上去的那么复杂.本文将官方 Wiki 中的安装过程稍作梳理,希望能为刚開始学习的人带来一些方便. 同一时候由于官方 Wiki 中的描写叙述已经足够具体.因此本文中将会出现大段引用而且不打算进行翻译.望请见谅. 1. 安装 ns-3 1.1 环境配置 本节參考官方 Wiki 中 Installation 页面的 Prerequisites - Ubuntu/Debian

ubuntu安装openmpi && ns-3 mpi

最近在做ns-3的网络仿真,但是当网络拓扑比较大或者速率很高时,仿真效率很低. 了解到ns-3的mpi模块可以提高仿真效率,就开始学习使用. 整个过程分为两步: 1. linux系统下安装openmpi.可以参考下面两篇文章: http://blog.csdn.net/jacketinsysu/article/details/44840611 http://www.linuxidc.com/Linux/2015-04/116448.htm 我根据这两篇文章操作之后,运行mpirun -np 4

[OO]ABAP OO 语法--实例看 "="与"?=" 的区别[转]

ABAP OO 面向对象语法   实例看  "=" 与 "?=" 的区别 1. "="  同类型赋值*&---------------------------------------------------------------------**& Report  Z_WYS_TYPEREF01*&作者:永上*&----------------------------------------------------

Linux下编译环境配置和搭建

配置安装虚拟机和Ubuntu系统: 虚拟机安装: VMware Workstation版本:vmware-workstation-full-9.0.2-1031769 安装前请大家切记BIOS的VT功能,不开的话安装Ubuntu 64bit 是不允许的.(设置安装64bit系统注意事项) 开启方式:Bios -> Security -> System Security -> enable VT 开启后就可以安装VM并自行破解. 注意:要先开启VT开安装VM,先安装VM再开启VT的话是不行

easyui textbox 设置只读不可编辑状态

在使用easyul的时候,发现输入框内容及不容易获取与设置,用jQuery的方式大部分失效.依稀记得好像是因为easyul会在原页面的基础上,生成了一些新的独有样式,并且暂时覆盖掉使用了easyul的标签块.  具体我也忘记了,反正知道有这么会事就可以啦, --输入框 $("#xx").textbox('setValue','value');  //设置输入框的值 $('#xx').textbox('textbox').attr('readonly',true);  //设置输入框为禁

动态编译程序与创建卸载程序域

==============================================动态编译程序思路 * 0,把C#以字符串的方式放在string对象里     * 1,实例化一个C#编译器:CSharpCodeProvider     * 2,创建编译器环境(并配置环境):CompilerParameters     * 3,开始编译:ccp.CompileAssemblyFromSource(cp, abc);     * 4,返回编译结果:CompilerResults     *

C++学习笔记(达内视频版)

达内C++(陈宗权主讲) 第一天: 课程分为Core C++(标准C++.不依赖操作系统)和Unix C++. 1.配置bash,运行.sh文件. vi bash_profile 在"path="后面加入":.";path以":"分隔路径,加入"."表示当前文件夹可运行. 2.编程语言发展史: 二进制机器码->汇编(高效)->原始高级语言(Fortan等)->结构化编程语言(C语言等)->面向对象的编程

表单(上)EasyUI Form 表单、EasyUI Validatebox 验证框、EasyUI Combobox 组合框、EasyUI Combo 组合、EasyUI Combotree 组合树

EasyUI Form 表单 通过 $.fn.form.defaults 重写默认的 defaults. 表单(form)提供多种方法来执行带有表单字段的动作,比如 ajax 提交.加载.清除,等等.当提交表单时,调用 'validate' 方法来检查表单是否有效. 用法 创建一个简单的 HTML 表单.构建表单并给 id.action.method 赋值. <form id="ff" method="post"> <div> <lab

11g Grid Control安装过程的一些“坑”

Oracle提供的图形化管理工具目前主要有三个版本: EMDC:Enterprise Manager Database Control EMGC:Enterprise Manager Grid Control EMCC:Enterprise Manager Cloud Control DC需要为每个实例创建一套,而GC则可以统一管理多实例,CC则运用了很火的"云"概念来做统一管理数据库,可谓是增强版的GC. Oracle官网上已经删除了几乎所有11g GC下载链接,主推12c和13c的