我想编写一个基于UDP的应用程序,它需要重新传输远程主机未确认的数据包。我假设有两种可能的方法:
对我的应用程序发送的每个数据包使用reactor.callLater()来调用一个函数,该函数检查是否已收到确认(如果没有,则重新发送数据包)。
记住特殊列表中的每个数据包,并定期调用一个函数,如果已收到确认,则会检查此列表的所有成员。此函数也将通过reactor.callLater()调用 - 超时设置为下一次重传(列表中所有数据包的最短值)。
我的问题是:
最好的问候
Maciek
答案 0 :(得分:1)
为了讨论callLater
的行为,我将忽略此问题的UDP部分并回答您提出的两个具体问题。 :)
延迟通话的处理非常有效。调度单个新呼叫的O(log N)表示已调度的呼叫数。总的反应堆性能与预定的呼叫数量保持不变。
就“中断”而言,“中断”是你想要的错误词。 Delayed calls can be rescheduled使用reset
或delay
。当然,您可以始终cancel
现有的电话并安排新电话。