1、前提:每次投递的接收缓冲区 在它返回后 就不再用它进行2次投递了
于是 接收缓冲区 在返回的时候,数据都是 从接收缓冲区的偏移[0]处开始填充的,且 接收缓冲区 可能被填满 也可能未被填满。
1.1、
假设 现在 接收到的 TCP数据块 已经是正确的顺序了(不管用何种手段,反正是保证了这个前提了)
假设 缓冲区长度为 1024
来了一个 TCP数据(长度为) 3000
(不管什么原因:可能是 发送机 较忙、网络较拥堵、交换机较忙)
可能接收的数据是这样的:(接收到的每一块数据 或 其中的某几个[尤其是 非末尾的]数据块 并未填满整个接收缓冲区)
第1块数据长度为:500
第2块数据长度为:500
第3块数据长度为:500
第4块数据长度为:500
第5块数据长度为:500
第6块数据长度为:500
貌似 我实验的过程中 遇到过这个现象
其它可能的情况:
一个接收缓冲区中,包含 多个完整的TCP数据包
一个接收缓冲区中,包含 若干个完整的TCP数据包 + 最多2个不完整TCP数据包
2、
3、
4、
5、