ns3的基础学习

这个星期要开始学仿真啦!感觉仿真真的是一个特别用的东西,但是因为种种原因都没有机会去学习。

现在实验室需要ns3仿真,所以我也要努力学!


ns3的安装就不说了,网上都有,反正就是安一大堆包的,然后很容易就装好了。


建议学ns3的时候去官网下载一份library,这样边看代码的时候边查,比较方便。


最开始的学习,我是跟着这个博客来学的http://blog.sina.com.cn/s/blog_5356e4790101fq2t.html,博客很棒。。唯一的就是字儿太多了。。。。。。

我也刚学几天,就大概的讲下自己的收获吧:

首先打开example/tutorial/fist.cc文件,这是一个最简单的p2p的例子,我贴代码出来讲解(其实NS3就是C++)



NS_LOG_COMPONENT_DEFINE ("FirstScriptExample");
定义Log名字(关于LOG的东西下面会讲)

int
main (int argc, char *argv[])                 //主函数
{
  Time::SetResolution (Time::NS);
  LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);      //下面会提到
  LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);


  NodeContainer nodes;                    //创建节点
  nodes.Create (2);


  PointToPointHelper pointToPoint;                                       //创建点到点的链路,设置Attribute属性值,这里是速率和时延)
  pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
  pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));


  NetDeviceContainer devices;                                 //创建完节点和链路要创建设备了
  devices = pointToPoint.Install (nodes);


  InternetStackHelper stack;                                  //安装协议栈
  stack.Install (nodes);


  Ipv4AddressHelper address;                           //分配IP地址,SetBase(IP地址,子网掩码),学过计网的应该都清楚,不多说啦
  address.SetBase ("10.1.1.0", "255.255.255.0");


  Ipv4InterfaceContainer interfaces = address.Assign (devices);


  UdpEchoServerHelper echoServer (9);           //建立端口为9的UDP Server


  ApplicationContainer serverApps = echoServer.Install (nodes.Get (1));
  serverApps.Start (Seconds (1.0));               //仿真start和stop时间设置
  serverApps.Stop (Seconds (10.0));


  UdpEchoClientHelper echoClient (interfaces.GetAddress (1), 9);   //建立客户端,连接Node1 地址,连接端口为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));

 1、现在说说日志这个东西,http://blog.sina.com.cn/s/blog_5356e4790101fq2n.html这里有,但是太长了,我概括一下

       在现有系统中,LOG有多个LEVEL,比如ALL  ,   INFO等,用户当然也可以自定义LEVEL(这里不多讲),举个例子

         LogComponentEnable ("UdpEchoClientApplication", LOG_LEVEL_INFO);     
         LogComponentEnable ("UdpEchoServerApplication", LOG_LEVEL_INFO);

         这里是来自你定义的UdpEchoClient和UdpEchoServer的日志消

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值