Omnet++ 在OMNET+中同时发送多个数据包+;不断地

Omnet++ 在OMNET+中同时发送多个数据包+;不断地,omnet++,Omnet++,我是OMNET++新手,需要您的帮助。我正在进行一个模拟,其中数据包需要从一个模块传输到另一个模块,而无需等待第一个模块发送所有数据包 ------------- ------------ ------------- | Module A | --> | Module B | --> | Module C | ------------- ------------

我是OMNET++新手,需要您的帮助。我正在进行一个模拟,其中数据包需要从一个模块传输到另一个模块,而无需等待第一个模块发送所有数据包

 -------------               ------------          -------------   
|   Module A  |     -->     |  Module B  |   -->  |   Module C  |
 -------------               ------------          -------------
现在,如果模块A通过模块B向模块C发送5个数据包,则模块B等待所有5个数据包接收,并且在收到所有5个数据包后,开始向模块C发送数据包

我想要的是,如果模块B接收到a数据包,它需要直接发送到模块C,而不需要等待模块a发送所有数据包

 -------------               ------------          -------------   
|   Module A  |     -->     |  Module B  |   -->  |   Module C  |
 -------------               ------------          -------------
请检查所附图片以供参考。在这幅图中,您可以看到中间的4个模块保留所有数据包,并在模块1发送所有数据包时开始转发

 -------------               ------------          -------------   
|   Module A  |     -->     |  Module B  |   -->  |   Module C  |
 -------------               ------------          -------------

提前谢谢你的帮助

模块A代码
正如Jerzy所说,您的模拟工作正常。假设您没有在模块之间的通道上设置延迟,您看到的是所有这些消息交换都是同时发生的(t=0),而不是按照实际动画显示的顺序。在模拟时间内,这些消息同时发生。观看右上角的模拟时间显示。它在这些消息交换过程中不会进行,但保持在0,因此您认为模块B在收到消息后不会立即发送的假设是错误的。当这些消息交换在同一模拟时间发生时,模拟器会在动画过程中将它们序列化,以便更好(或更糟)。或者换句话说,这里有两个不同的时间线:模拟时间和动画时间。这两者并不相同,有时会令人困惑

现在,如果要查看更符合模拟时间的动画,应转到“动画选项”对话框并启用广播动画。该模式收集在同一事件中发生的所有事件(消息发送),并并行设置它们的动画。您将看到模块A发送的所有消息都是并行动画,紧接着模块B将发送到C。请注意,这仍然不能反映真实情况(模拟时间),因为它仅为在同一事件中并行发生的消息(而不是在同一模拟时间发生的消息)设置动画。i、 e.实际上,所有模块A和模块B将同时发送消息,视频上的所有消息交换应立即设置动画。然而,这种动画在message send的图形化实现中也会产生误导,因为在这种情况下,您将丢失因果信息(也就是说,您不会看到来自模块B的消息实际上是由来自模块A的消息引起的,因此这种模式也会产生误导)。这就是为什么OMNeT++会退回到仅为来自同一事件的消息设置动画的方式

动画的第三种方法是去掉移动的点,只闪烁显示消息交换发生的连接线。但是,这也会丢失信息,你会看到屏幕上所有连接同时闪烁,因果关系也会再次丢失


事实上,信息在物理实体之间的传输从来不会以无限的速度进行,因此在它们之间的通道上总是存在某种延迟。这对动画制作有很大帮助。最后一个建议是,您应该使用最新版本的OMNeT++和Qtenv,因为它大大改进了动画功能。

,正如Jerzy所建议的那样,您的模拟工作正常。假设您没有在模块之间的通道上设置延迟,您看到的是所有这些消息交换同时发生(t=0)并非按照实际动画所示的顺序。在模拟时间内,这些消息同时发生。请观看右上角的模拟时间显示。在这些消息交换期间,模拟时间不进行,但保持在0,因此您认为模块B在接收到消息后不会立即发送是错误的。Whi这些消息交换发生在同一模拟时间,模拟器在动画过程中将它们序列化为更好(或更糟)。或者说,不同的是,这里有两个不同的时间线:模拟时间和动画时间。这两个时间线不相同,有时会混淆

现在,如果您想看到更符合模拟时间的动画,您应该转到“动画选项”对话框并启用广播动画。该模式收集所有事件(消息发送)这在同一事件中发生,并对它们进行并行动画制作。您将看到模块A发送的所有消息都是并行动画,紧接着模块B将发送给C。请注意,这仍然不能反映现实(模拟时间),因为它仅对在同一事件中并行发生的消息进行动画制作(不是在同一模拟时间发生的事件)。即,实际上,所有模块A和模块B都将同时发送消息,视频上的所有消息交换应立即设置动画。但是,该动画也会误导使用点沿连接线移动的消息发送的图形实现,因为在这种情况下,您将失去原因和效果信息(即,您不会看到来自模块B的消息实际上是由来自模块A的消息引起的,因此此模式也会产生误导)。这就是为什么OMNeT++会返回到仅为来自同一事件的消息设置动画的原因

动画的第三种方法是去掉移动的点,只闪烁显示消息交换发生的连接线。但是,这也会丢失信息,你会看到屏幕上所有连接同时闪烁,因果关系也会再次丢失

事实上,informat
** Initializing network
Initializing module QKDNetwork, stage 0
QKDNetwork.AliceProcessor: Initializing module QKDNetwork.AliceProcessor, stage 0
QKDNetwork.BobProcessor: Initializing module QKDNetwork.BobProcessor, stage 0
QKDNetwork.AlicePublicChannel: Initializing module QKDNetwork.AlicePublicChannel, stage 0
QKDNetwork.BobPublicChannel: Initializing module QKDNetwork.BobPublicChannel, stage 0
QKDNetwork.FilterA: Initializing module QKDNetwork.FilterA, stage 0
QKDNetwork.FilterB: Initializing module QKDNetwork.FilterB, stage 0
QKDNetwork.FilterC: Initializing module QKDNetwork.FilterC, stage 0
QKDNetwork.FilterD: Initializing module QKDNetwork.FilterD, stage 0
QKDNetwork.Alice_Quantum_Channel: Initializing module QKDNetwork.Alice_Quantum_Channel, stage 0
QKDNetwork.Bob_Quantum_Channel: Initializing module QKDNetwork.Bob_Quantum_Channel, stage 0
QKDNetwork.DiagonalFilter: Initializing module QKDNetwork.DiagonalFilter, stage 0
QKDNetwork.HorizontalFilter: Initializing module QKDNetwork.HorizontalFilter, stage 0
QKDNetwork.QuantumStatesProcessorBob: Initializing module QKDNetwork.QuantumStatesProcessorBob, stage 0
QKDNetwork.QuantumStatesProcessorAlice: Initializing module QKDNetwork.QuantumStatesProcessorAlice, stage 0
** Event #1  t=0  QKDNetwork.QuantumStatesProcessorAlice (QKDProcessor, id=15)  on 01000001 (omnetpp::cMessage, id=0)
** Event #2  t=0  QKDNetwork.FilterC (PolarizationFilter, id=8)  on 0 (omnetpp::cMessage, id=2)
** Event #3  t=0  QKDNetwork.FilterB (PolarizationFilter, id=7)  on 1 (omnetpp::cMessage, id=4)
** Event #4  t=0  QKDNetwork.FilterB (PolarizationFilter, id=7)  on 0 (omnetpp::cMessage, id=6)
** Event #5  t=0  QKDNetwork.FilterD (PolarizationFilter, id=9)  on 0 (omnetpp::cMessage, id=8)
** Event #6  t=0  QKDNetwork.FilterD (PolarizationFilter, id=9)  on 0 (omnetpp::cMessage, id=10)
** Event #7  t=0  QKDNetwork.FilterC (PolarizationFilter, id=8)  on 0 (omnetpp::cMessage, id=12)
** Event #8  t=0  QKDNetwork.FilterA (PolarizationFilter, id=6)  on 0 (omnetpp::cMessage, id=14)
** Event #9  t=0  QKDNetwork.FilterD (PolarizationFilter, id=9)  on 1 (omnetpp::cMessage, id=16)
** Event #10  t=0  QKDNetwork.Alice_Quantum_Channel (QKDChannel, id=10)  on 0 (omnetpp::cMessage, id=2)