ip组包。怎样确认组包完成。
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片?这样会快一些吗?
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片?这样会快一些吗?
...全文
相关推荐
UDP客户端与服务端,组包与解包
客户端在发送前必须完成组包操作,即按照预定义的二进制协议格式将多个字段(如消息类型、序列号、时间戳、有效载荷长度、校验码及原始业务数据)依次写入QByteArray缓冲区,确保字节序统一(通常为网络字节序
用Java实现IP组播
Java通过其内置的`java.net`包中的`MulticastSocket`类来支持IP组播。以下是一些关键知识点:1.
IP 单播、广播、组播介绍
标题“IP 单播、广播、组播介绍”揭示了本文将要讨论的三个主要的IP网络数据传输方式:单播(Unicast)、广播(Broadcast)、组播(Multicast)。
组播IP地址与组播MAC地址之间的换算方法与例子.pdf
组播IP地址与组播MAC地址之间的换算方法与例子组播IP地址与组播MAC地址之间的换算方法是指将IP地址转换为MAC地址的过程。这其中需要了解一些基本概念,如MAC地址的组成、IP地址的范围等。
IP组播测试软件IP组播测试软件
IP组播测试软件则是用于评估和优化这种网络服务性能的关键工具。在IP组播测试中,主要关注以下几个关键知识点:1.


模式及实现
