我正在尝试在 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
就像 ns-3-users 论坛上的回复一样,这是由于 Cppyy 限制不支持自定义
operator Address
,需要从 InetSocketAddress
类型显式转换为 Address
。
可以通过 ns-3.38 及更高版本中的
InetSocketAddress().ConvertTo()
或 ns-3.37 中的 ns.addressFromInetSocketAddress(InetSocketAddress())
完成转换。