NS-3 Python 模拟

问题描述 投票:0回答:1

我正在尝试在 python 中使用 ns-3 。我专门处理示例目录中的

manet-routing-compare.cc
文件,并尝试将其转换为 Python 代码。

manet-routing-compare.cc
中,第379行:

AddressValue remoteAddress(InetSocketAddress(adhocInterfaces.GetAddress(i), port));

我将其转换为:

port = c_int(9)
remoteAddress = ns.network.AddressValue(ns.network.InetSocketAddress(adhocInterfaces.GetAddress(i), port.value))

但是我收到以下错误:

TypeError: none of the 4 overloaded methods succeeded. Full details:
  AddressValue::AddressValue(ns3::AddressValue&&) =>
    ValueError: could not convert argument 1 (object is not an rvalue)
  AddressValue::AddressValue(const ns3::AddressValue&) =>
    TypeError: could not convert argument 1
  AddressValue::AddressValue() =>
    TypeError: takes at most 0 arguments (1 given)
  AddressValue::AddressValue(const ns3::Address& value) =>
    TypeError: could not convert argument 1

对于解决这个问题有什么建议吗?

以下语句打印此内容:

print(ns.network.InetSocketAddress(adhocInterfaces.GetAddress(i), port.value))
02-07-0a:01:01:01:09:00:00
python ns-3
1个回答
0
投票

就像 ns-3-users 论坛上的回复一样,这是由于 Cppyy 限制不支持自定义

operator Address
,需要从
InetSocketAddress
类型显式转换为
Address

可以通过 ns-3.38 及更高版本中的

InetSocketAddress().ConvertTo()
或 ns-3.37 中的
ns.addressFromInetSocketAddress(InetSocketAddress())
完成转换。

论坛帖子链接 https://groups.google.com/g/ns-3-users/c/yQ3h_y235Es

© www.soinside.com 2019 - 2024. All rights reserved.