getTransmissionChannel

getTransmissionChannel

我在我的简单模块中定义了这个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/

10-10 20:48