NS3-命令行参数

参考书:《NS-3网络模拟器基础与应用》–马春光、姚建盛
这里有电子版:链接: https://pan.baidu.com/s/1z7PpGkYKd6dt6pIwTfYj5g 密码: kisn。如果百度网盘不骗我的话,应该是永久有效的。
命令行可以传递参数修改系统已有参数。

一、修改系统参数

ns-3还提供了另一种不需要重新编辑和构建脚本运行行为的方法。这种方法就是通过命令行传递参数来改变脚本中的变量。
不过在使用命令行系统前,首先要声明一个命令行类的对象,然后调用Parse,具体方法如下:

int main ( int argc, char *argv[] )
{
...
ComandLine cmd;
cmd.Parse (argc, argv);
...

这两行代码简单明了,但是很重要。它意味着,用户可以通过命令行来访问代码中的全局变量和ns-3中的属性系统。我们在此基础上稍微修改一下first.cc,在编译时附加一些额外的信息,如下:

--PrintHelp: Print this help message.
--PrintGroups: Print the list of groups.
--PrintTypeIds: Print all TypeIds.
--PrintGroup=[Group]:Print all TypeIds of group.
--PrintAttributes=[typeid]: Print all attributes of typeid.
--PrintGlobals: Print the list of globals.

在这里插入图片描述

PrintAttributes这一项的功能就是挂载用户想要修改的文件系统的属性名。比如在这里:

  PointToPointHelper pointToPoint;
  pointToPoint.SetDeviceAttribute ("DataRate", StringValue ("5Mbps"));
  pointToPoint.SetChannelAttribute ("Delay", StringValue ("2ms"));

就是first.cc中为建立物理连接所配置的信道属性。接下来通过命令行对其重新赋值。
因为在脚本中用到的是PointToPoint类,因此可以通过命令行显示该类在使用中所定义的默认值,不过在操作过程中是使用已经和网络设备绑定的类PointToPointNetDevice中所涉及的属性的默认值,操作如下:
在这里插入图片描述
可以看到一些默认的属性。但是我们实际修改了DateRate的速率,5Mbps,我们分别使用默认值和5Mbps和默认值运行,看看有什么区别。
在这里插入图片描述
使用默认值(把DateRate赋值那句注释掉)得到结果为:
在这里插入图片描述
由于把数据的发送速率从5Mbit/s减少到了32768bit/s,所以服务器收到数据的事件相应地推迟了一段时间。当然也可以通过命令行进一步修改这些属性值。

二、自定义变量

我们可以添加自己的变量,然后通过钩挂将其与命令行相关联。
首先确定要钩挂的变量,还是以first.cc为例:

echoClient.SetAttribute ( "MaxPackets",UnitegerValue(1));

这句命令的意思是限制了MaxPackets属性是固定的,如果想把这段代码改成可以在命令行编译脚本时自定义,那么稍微给代码整个容:

int main ( int argc, char *argv[] )
{
Uin32_t  nPackets = 1;  // 添加一个变量
ComandLine cmd;
//下行代码使变量nPackets是可以在命令行里修改。
cmd.AddValue("nPackets", "Number of packets to echo", nPackets);
cmd.Parse (argc, argv); //这个代码一定要放在上述三行代码之后
...

然后下面代码做如下修改,用nPackets代替常量1,这样就能传参了:

echoClient.SetAttribute ( "MaxPackets",UnitegerValue(nPackets));

我们再编译first》cc脚本,并且提供命令行参数: --PrintHelp 如下:
在这里插入图片描述
这时候多了一个Program Arguments, 这就是我们设置的参数。现在对参数进行一下修改,设置发送两次分组:
在这里插入图片描述
注意 "–nPackets=2"不要打空格。这里的输出结果和nPackets=1时有很大区别,这里客户端发送了两次分组,而之前只发送了一次分组。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值