ip组包。怎样确认组包完成。
千梦一生 2021-05-26 09:57:10 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片?这样会快一些吗?