我在我的简单模块中定义了这个getTransmissionChannel()
。
对于以下模拟连接,它可以完美运行:
CustomedNode1.Netport <--> LinkDefinedChannel <--> mySwitch.connectedToPort1;
CustomedNode2.Netport <--> LinkDefinedChannel <--> mySwitch.connectedToPort2;
CustomedNode3.Netport <--> LinkDefinedChannel <--> mySwitch.connectedToPort3;
CustomedNode4.Netport <--> LinkDefinedChannel <--> mySwitch.connectedToPort4;
CustomedNode5.Netport <--> LinkDefinedChannel <--> mySwitch.connectedToPort5;
然后,我用另一种类型的节点替换了node5,但是使用了相同的端口,并且生成的新连接为:
CustomedNode1.Netport <--> LinkDefinedChannel <--> ibSwitch.connectedToPort1;
CustomedNode2.Netport <--> LinkDefinedChannel <--> ibSwitch.connectedToPort2;
CustomedNode3.Netport <--> LinkDefinedChannel <--> ibSwitch.connectedToPort3;
CustomedNode4.Netport <--> LinkDefinedChannel <--> ibSwitch.connectedToPort4;
mySwitch.connectedToPort5 <--> gatewayNode.Netport ;
现在,模拟崩溃,提示
getTransmissionChannel()
未找到传输通道。最佳答案
getTransmissionChannel()
返回传输。如果您在链接中未指定任何通道,则OMNet ++将透明地替换为cIdealChannel
,这基本上意味着没有通道对象已分配给连接。
而在您的情况下,节点更换新连接后mySwitch.connectedToPort5 <--> gatewayNode.Netport ;
没有定义任何通道。因此,IDE用cIdealChannel
替换,因此getTransmissionChannel()
无法找到任何传输通道,因为没有为此连接定义任何通道对象。
所以代替mySwitch.connectedToPort5 <--> gatewayNode.Netport ;
至
mySwitch.connectedToPort5 <--> LinkDefinedChannel <--> gatewayNode.Netport ;
现在
getTransmissionChannel()
应该能够获取传输通道,因为您正在为此连接定义一个通道对象。关于c++ - getTransmissionChannel()使omnet++模拟崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35954771/