• 网络编程.TCP分块接收数据(AIO)(IOCP)


    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、

  • 相关阅读:
    P3146 [USACO16OPEN]248
    P2590 [ZJOI2008]树的统计
    P3379 【模板】最近公共祖先(LCA)
    P2253 好一个一中腰鼓!
    数组中出现次数超过一半的数字
    字符串的排列
    二叉搜索树与双向链表
    二叉搜索树的后序遍历序列
    从上往下打印二叉树
    顺时针打印矩阵
  • 原文地址:https://www.cnblogs.com/javaskill/p/12035873.html
Copyright © 2020-2023  润新知