ns3程序运行

 假期三天,尽折腾ns3了。准备入坑ns3,感觉它比ns2强大很多。但是资料较少。网上的一些博客,大部分都是对ns3 manual的翻译。
 在example文件下创建一个新的文件夹,ns3_test。这个文件下放下面两个文件。
ns3_test.cc

#include"ns3/network-module.h"
#include"ns3/core-module.h"
#include "ns3/internet-stack-helper.h"
#include<iostream>
using namespace std;
using namespace ns3;
int main()
{
  NodeContainer n;
  n.Create (2);

  InternetStackHelper internet;
  internet.Install (n);
  Ptr<Node> node=n.Get(1);
/**
   * 以下代码用于输出一个Node节点经过install()方法的安装后,
   * 已经聚合的所有对象
   */
  Node::AggregateIterator iterator = node->GetAggregateIterator();
    while(iterator.HasNext()){
      Ptr<const Object> obj = iterator.Next();
      std::cout<<"InternetStackHelper::Install    name="<<obj->GetInstanceTypeId().GetName()<<std::endl;
    } 
}

wscript

def build(bld):
    obj = bld.create_ns3_program('ns3_test', ['csma', 'internet', 'applications'])
    obj.source = 'ns3_test.cc'

 执行命令./waf。之后执行命令./waf –run ns3_test,运行程序。
 程序输出结果:

InternetStackHelper::Install    name=ns3::Ipv4L3Protocol
InternetStackHelper::Install    name=ns3::Ipv6L3Protocol
InternetStackHelper::Install    name=ns3::Node
InternetStackHelper::Install    name=ns3::ArpL3Protocol
InternetStackHelper::Install    name=ns3::Icmpv4L4Protocol
InternetStackHelper::Install    name=ns3::Ipv4RawSocketFactory
InternetStackHelper::Install    name=ns3::GlobalRouter
InternetStackHelper::Install    name=ns3::Icmpv6L4Protocol
InternetStackHelper::Install    name=ns3::Ipv6RawSocketFactory
InternetStackHelper::Install    name=ns3::Ipv6ExtensionRoutingDemux
InternetStackHelper::Install    name=ns3::Ipv6ExtensionDemux
InternetStackHelper::Install    name=ns3::Ipv6OptionDemux
InternetStackHelper::Install    name=ns3::TrafficControlLayer
InternetStackHelper::Install    name=ns3::UdpL4Protocol
InternetStackHelper::Install    name=ns3::UdpSocketFactory
InternetStackHelper::Install    name=ns3::TcpL4Protocol
InternetStackHelper::Install    name=ns3::TcpSocketFactory
InternetStackHelper::Install    name=ns3::PacketSocketFactory

 我主要参考了[1]。这个程序打印出InternetStackHelper中自动安装的对象类。通过这几天阅读源代码,我知道,Node对象中,会放置协议栈对象, 并和对应的类共享Object中的m_aggregates指针。这个打印程序,我主要是为了连接,到底Node对象中,什么时候安装了name=ns3::UdpSocketFactory对象。
[1]NS3 Node聚合对象说明

猜你喜欢

转载自blog.csdn.net/u010643777/article/details/79842762
今日推荐