首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NS3中设置节点的IP地址和数据?

如何在NS3中设置节点的IP地址和数据?
EN

Stack Overflow用户
提问于 2018-03-03 23:18:23
回答 1查看 2K关注 0票数 0

关于ns-3我有两个主要问题。

  1. 我已经完全构建了我的拓扑,但我希望能够设置(改变)存在于NodeContainer中的节点的IP地址。这是可能的吗?如果有可能呢?
  2. 在模拟对等流服务时,我需要设置节点所持有的数据。我不明白如何更改节点保存的数据,甚至看不到数据。

很抱歉让您久等了。下面是我用来设置节点IP地址的代码片段。其中csmaTopLeftParentToTopLeft是NodeContainer

代码语言:javascript
复制
node = csmaTopLeftParentToTopLeft.Get(2);

ipv4 = node->GetObject<Ipv4> (); // Get Ipv4 instance of the node

addr = ipv4->GetAddress (0, 0).GetLocal (); // Get Ipv4InterfaceAddress of xth interface.
IPAddress = Ip.c_str();
addr.Set(IPAddress);

这将运行,但是如果我在使用print语句之后检查该值,它将显示该值从未被实际更改。

这两件事似乎都不应该这么难做,但我尝试了很多方法,在互联网上搜索,却找不到关于这个话题的任何东西。

EN

回答 1

Stack Overflow用户

发布于 2018-03-10 18:15:40

我想出了如何设置一个节点的IP地址。

代码语言:javascript
复制
 Ptr<Node> node;
 Ptr<Ipv4> ipv4;
 Ipv4InterfaceAddress addr;
 Ipv4Address addressIp;
 const char * IPAddress;

 IPAddress = Ip.c_str();

 Ptr<NetDevice> device =  devices.Get(counter);

 node = device->GetNode();

 ipv4 = node->GetObject<Ipv4>(); // Get Ipv4 instance of the node

 int32_t interface = ipv4->GetInterfaceForDevice (device);
 if (interface == -1) {
   interface = ipv4->AddInterface (device);
 }

 Ipv4InterfaceAddress ipv4Addr = Ipv4InterfaceAddress (Ipv4Address(IPAddress), Ipv4Mask ("/16"));

 ipv4->AddAddress (interface, ipv4Addr);
 ipv4->SetMetric (interface, 1);
 ipv4->SetUp (interface);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49090264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档