ip组包。怎样确认组包完成。

千梦一生 千梦一生 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
A-->偏移:0 包长:200
B-->偏移:25 包长:200
C-->偏移:50 包长:200
D-->偏移:75 包长:200
E-->偏移:100 包长:200
------------------------------------------------------------------------

组包自然是收到ABCDE然后按这个顺序组上即可。
但是接受顺序是不受保证的。

------------------------------------------------------------------------

所以大家觉得应该写成一个怎样的尽量高效的逻辑,来判断组包是否完成?
收到一个扔到一个队列中,然后根据片偏移排序?排完后计算 :
if(0*8+200 == 25*200)
if(25*8+200 == 50*200)
...
循环?
每收到一包都要这么干吗?效率怎么感觉会比较低?

感觉挺麻烦。

或者我在想,能不能:收到的n包排好序,第n+1包通过某种方式刚好插入到对的位置?
或者我又想,能不能:局部组包,本来分了40片。我可能先收到了{2,3,4}、{14,15}、{30,31,32}。那我先给他组成3片?这样会快一些吗?
...全文
评论 6
收藏 已收藏
分享
返回顶部
千梦一生
模式及实现 5,529 成员 4,167 内容