gpt4 book ai didi

c - 选择性重复 ARQ 中的定时器

转载 作者:太空宇宙 更新时间:2023-11-04 01:26:14 26 4
gpt4 key购买 nike

我的教授给我布置了一项作业,要我用 C 语言为发送方和接收方之间的数据包事务实现选择性重复 ARQ 算法。发送方有一个与要发送的每个数据包相关联的计时器,该计时器在发送该数据包时被触发,根据它决定需要发送哪个数据包副本。
但是我不知道如何设置每个数据包的定时器。请为此提出一些方法。

提前致谢!!

最佳答案

  1. 保留一个数据结构(例如优先级队列或有序映射等),其中包含您计划(重新)发送的每个数据包,以及您打算(重新)发送它的时间。理想情况下,这种数据结构可以高效地确定数据结构中当前的最小时间戳,但如果计划的数据包数量相对较少,则更简单的无序数据结构(如链表)也可以工作。
  2. 在事件循环的每次迭代中,确定数据结构中的最小时间戳值。减去 current time从该时间戳值获取延迟时间(以毫秒或微秒或类似时间为单位)。
  3. 如果您使用 select() 或类似的方法,您可以将延迟时间作为超时参数传递。如果您在不使用多路复用的情况下做一些更简单的事情,您可以将延迟时间传递给 usleep() 或类似的方法而不用这样做。
  4. select()(或usleep())返回后,再次检查当前时间。如果当前时间现在大于或等于您的目标时间,您可以发送具有最小时间戳的数据包,然后将其从您的数据结构中删除。 (如果您认为稍后可能需要重新发送,您可以使用新的/更新的时间戳值将其重新插入到数据结构中)

关于c - 选择性重复 ARQ 中的定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30420971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com