如何解决如何在 NS3 运行时更改点对点链接数据速率
我是 NS3 的新手。我有一个在运行时更改点对点链接数据速率的查询。我尝试了 https://stackoverflow.com/a/65514090/13121848 中提到的解决方案。但是这里 SetDeviceAttribute 没有为我解决。
void
ModifyLinkRate(PointToPointNetDevice *dev) {
dev->SetDeviceAttribute("Datarate",StringValue ("1Mbps"));
//dev->SetAttribute("Datarate",StringValue ("1Mbps"));
}
int
main (int argc,char *argv[])
{
...
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("Datarate",StringValue (linkRate));
...
Simulator::Schedule(Seconds(2.0),&ModifyLinkRate,&pointToPoint );
}
解决方法
为了更改 pointTopoint 链接的数据速率,必须检索安装在节点中的 PointToPointNetDevice。这可以使用与节点关联的 NetDeviceContainer 来完成。示例代码如下,
void
ModifyLinkRate(NetDeviceContainer *ptp,DataRate lr) {
StaticCast<PointToPointNetDevice>(ptp->Get(0))->SetDataRate(lr);
}
int
main (int argc,char *argv[])
{
...
PointToPointHelper pointToPoint;
pointToPoint.SetDeviceAttribute ("DataRate",StringValue (linkRate));
...
NetDeviceContainer p2pDevices = pointToPoint.Install (p2pNodes);
...
Simulator::Schedule(Seconds(2.0),&ModifyLinkRate,&p2pDevices,DataRate("20Mbps"));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。