使用INET的Ipv4FlatNetworkConfigurator出现类型转换错误如何解决
错误原因
你当前网络中定义的配置器类型和主机节点内置配置器的预期类型不匹配:
- INET框架中
StandardHost内置的Ipv4NodeConfigurator模块,默认会尝试将网络顶层的configurator模块强转为inet::Ipv4NetworkConfigurator*类型 - 你NED文件中声明的configurator是
Ipv4FlatNetworkConfigurator类型,这是两种无继承兼容关系的不同IP配置器实现,强制类型转换失败就触发了你看到的初始化报错。
解决方法
选以下任意一种方案修改即可:
方案1:替换网络配置器类型(最简单通用)
直接修改NED文件中configurator的类型,把Ipv4FlatNetworkConfigurator替换为Ipv4NetworkConfigurator即可,修改后的submodules部分对应代码如下:
configurator: Ipv4NetworkConfigurator { @display("p=201,293"); }
该方案不需要修改其他任何配置,Ipv4NetworkConfigurator会自动识别网络拓扑分配IP,完全适配你当前的网络结构和INI配置。
方案2:手动指定节点配置器的配置源(如果你确实需要用Flat配置器)
如果你的场景必须使用Ipv4FlatNetworkConfigurator,需要在INI配置中给所有主机、服务器的ipv4节点配置器指定正确的配置器类型适配参数,添加如下配置:
**.ipv4.configurator.configuratorModule = "^.^.configurator" **.ipv4.configurator.castConfigurator = false
该配置会关闭节点配置器的强制类型转换校验,直接绑定你定义的Flat配置器作为IP配置源。
内容的提问来源于stack exchange,提问作者Mitchell Carran
相关产品推荐
相关产品推荐

