• ns-3 NetAnim遇到了一个问题


    安装好了 NetAnim 之后,使用NS3原有例子 third.cc ,在 Simulator::run() 前面添加如下语句:

    AnimationInterface anim("third.xml");
    

    在目录:/home/wasdns/Documents/NS3/ns-3.17 Terminal 执行:./waf --run scratch/third
    生成xml文件:third.xml

    打开 NetAnim 选择刚才的xml文件,正满心欢喜的想说解决了,出现了如下问题:

    更新
    在将XML文件第一行改成ns-3.17后,它又给出了提示:

    于是,再次利用 vim 编辑器将第一行改为:
    <anim ver="netanimation">

    ns-3的一个小程序就跑起来了。

    顺便贴一下跑的结果(Terminal):

    (NetAnim)

    third.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
     */
    
    #include "ns3/core-module.h"
    #include "ns3/point-to-point-module.h"
    #include "ns3/network-module.h"
    #include "ns3/applications-module.h"
    #include "ns3/wifi-module.h"
    #include "ns3/mobility-module.h"
    #include "ns3/csma-module.h"
    #include "ns3/internet-module.h"
    #include "ns3/netanim-module.h"
    
    // Default Network Topology
    //
    //   Wifi 10.1.3.0
    //                 AP
    //  *    *    *    *
    //  |    |    |    |    10.1.1.0
    // n5   n6   n7   n0 -------------- n1   n2   n3   n4
    //                   point-to-point  |    |    |    |
    //                                   ================
    //                                     LAN 10.1.2.0
    
    using namespace ns3;
    
    NS_LOG_COMPONENT_DEFINE ("ThirdScriptExample");
    
    int 
    main (int argc, char *argv[])
    {
      bool verbose = true;
      uint32_t nCsma = 3;
      uint32_t nWifi = 3;
    
      CommandLine cmd;
      cmd.AddValue ("nCsma", "Number of "extra" CSMA nodes/devices", nCsma);
      cmd.AddValue ("nWifi", "Number of wifi STA devices", nWifi);
      cmd.AddValue ("verbose", "Tell echo applications to log if true", verbose);
    
      cmd.Parse (argc,argv);
    
      if (nWifi > 18)
        {
          std::cout << "Number of wifi nodes " << nWifi << 
                       " specified exceeds the mobility bounding box" << std::endl;
          exit (1);
        }
    
      if (verbose)
        {
          LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);
          LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);
        }
    
      NodeContainer p2pNodes;
      p2pNodes.Create (2);
    
      PointToPointHelper pointToPoint;
      pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
      pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));
    
      NetDeviceContainer p2pDevices;
      p2pDevices = pointToPoint.Install (p2pNodes);
    
      NodeContainer csmaNodes;
      csmaNodes.Add (p2pNodes.Get (1));
      csmaNodes.Create (nCsma);
    
      CsmaHelper csma;
      csma.SetChannelAttribute ("DataRate", StringValue ("100Mbps"));
      csma.SetChannelAttribute ("Delay", TimeValue (NanoSeconds (6560)));
    
      NetDeviceContainer csmaDevices;
      csmaDevices = csma.Install (csmaNodes);
    
      NodeContainer wifiStaNodes;
      wifiStaNodes.Create (nWifi);
      NodeContainer wifiApNode = p2pNodes.Get (0);
    
      YansWifiChannelHelper channel = YansWifiChannelHelper::Default ();
      YansWifiPhyHelper phy = YansWifiPhyHelper::Default ();
      phy.SetChannel (channel.Create ());
    
      WifiHelper wifi = WifiHelper::Default ();
      wifi.SetRemoteStationManager ("ns3::AarfWifiManager");
    
      NqosWifiMacHelper mac = NqosWifiMacHelper::Default ();
    
      Ssid ssid = Ssid ("ns-3-ssid");
      mac.SetType ("ns3::StaWifiMac",
                   "Ssid", SsidValue (ssid),
                   "ActiveProbing", BooleanValue (false));
    
      NetDeviceContainer staDevices;
      staDevices = wifi.Install (phy, mac, wifiStaNodes);
    
      mac.SetType ("ns3::ApWifiMac",
                   "Ssid", SsidValue (ssid));
    
      NetDeviceContainer apDevices;
      apDevices = wifi.Install (phy, mac, wifiApNode);
    
      MobilityHelper mobility;
    
      mobility.SetPositionAllocator ("ns3::GridPositionAllocator",
                                     "MinX", DoubleValue (0.0),
                                     "MinY", DoubleValue (0.0),
                                     "DeltaX", DoubleValue (5.0),
                                     "DeltaY", DoubleValue (10.0),
                                     "GridWidth", UintegerValue (3),
                                     "LayoutType", StringValue ("RowFirst"));
    
      mobility.SetMobilityModel ("ns3::RandomWalk2dMobilityModel",
                                 "Bounds", RectangleValue (Rectangle (-50, 50, -50, 50)));
      mobility.Install (wifiStaNodes);
    
      mobility.SetMobilityModel ("ns3::ConstantPositionMobilityModel");
      mobility.Install (wifiApNode);
    
      InternetStackHelper stack;
      stack.Install (csmaNodes);
      stack.Install (wifiApNode);
      stack.Install (wifiStaNodes);
    
      Ipv4AddressHelper address;
    
      address.SetBase ("10.1.1.0", "255.255.255.0");
      Ipv4InterfaceContainer p2pInterfaces;
      p2pInterfaces = address.Assign (p2pDevices);
    
      address.SetBase ("10.1.2.0", "255.255.255.0");
      Ipv4InterfaceContainer csmaInterfaces;
      csmaInterfaces = address.Assign (csmaDevices);
    
      address.SetBase ("10.1.3.0", "255.255.255.0");
      address.Assign (staDevices);
      address.Assign (apDevices);
    
      UdpEchoServerHelper echoServer (9);
    
      ApplicationContainer serverApps = echoServer.Install (csmaNodes.Get (nCsma));
      serverApps.Start (Seconds (1.0));
      serverApps.Stop (Seconds (10.0));
    
      UdpEchoClientHelper echoClient (csmaInterfaces.GetAddress (nCsma), 9);
      echoClient.SetAttribute ("MaxPackets", UintegerValue (1));
      echoClient.SetAttribute ("Interval", TimeValue (Seconds (1.0)));
      echoClient.SetAttribute ("PacketSize", UintegerValue (1024));
    
      ApplicationContainer clientApps = 
        echoClient.Install (wifiStaNodes.Get (nWifi - 1));
      clientApps.Start (Seconds (2.0));
      clientApps.Stop (Seconds (10.0));
    
      Ipv4GlobalRoutingHelper::PopulateRoutingTables ();
    
      Simulator::Stop (Seconds (10.0));
    
      pointToPoint.EnablePcapAll ("third");
      phy.EnablePcap ("third", apDevices.Get (0));
      csma.EnablePcap ("third", csmaDevices.Get (0), true);
      
      AnimationInterface anim("third.xml");
      Simulator::Run ();
      Simulator::Destroy ();
      return 0;
    }
    
    
  • 相关阅读:
    C#中的?问号
    佛学中的108条做人道理
    SQL Server函数总结
    ASP.NET MVC与Web Forms
    常数定义和字段定义的区别
    What is the purpose of Entity Framework T4 template.
    ASP.NET Internals – IIS and the Process Model
    asp.net为什么没有多重继承(个人观点,欢迎指正,谢谢!)
    c#委托,事件及观察者模式(转自:http://www.cnblogs.com/JimmyZhang/archive/2011/12/25/903360.html)
    GC and Memory leak
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5664071.html
Copyright © 2020-2023  润新知