嗨,我有一台服务器通过 UDP 与客户端通信。基本上,客户端流向服务器 UDP 数据包。每个数据包由标头和有效负载组成。在标题中,只有一个短整数 - 我称之为 seqnum,从 0 到 SHORT_MAX。当客户端在发送时达到 SHORT_MAX 时,它会再次从 0 开始。
在服务器上,我需要以这种方式重建流:
a) 如果数据包到达时带有预期的 seqnum 附加到流。
b) 如果数据包以低于预期的 seqnum 到达 - 丢弃它 - 它是迟到的数据包
c) 如果数据包到达的 seqnum 比预期的高 - 将预期和实际 seqnum 之间的数据包视为丢失并尝试重建它们,然后附加实际数据包
我现在正在处理与计数器溢出有关的两个问题:
1) 如何检测情况 c) 在 SHORT_MAX 边界上(例如,预期是 SHORT_MAX-2,数据包中的实际 seqnum 是 2) - 在我的场景中,它会被错误地检测为情况 b)
2) 与情况 b) 相同的问题被错误地检测为 c)
多谢