|
发表于 2022-4-6 16:32:07
|
显示全部楼层
河南省焦作市
|
粘包处理 | | | |
客户端句柄 | 整数型 | | | | 连接ID | 整数型 | | | | 缓冲区指针 | 整数型 | | | | 回调子程序 | 整数型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | pData | 字节集 | | | 包数据长度 | 整数型 | | | 原始长度 | 整数型 | | | 包数据指针 | 整数型 | | | 判断循环首 (真)如果真 (_取出数据 (缓冲区指针, 4, pData ) ≠ 1 ) 跳出循环 () 判断 (取字节集左边 (pData, 1 ) = { 0 }) 包数据长度 = SYS_SwapEndian32 (_HP_GetDword (取变量数据地址 (pData ), 0 )) 包数据长度 = _HP_GetDword (取变量数据地址 (pData ), 0 )原始长度 = 包数据长度 + 4 如果真 (原始长度 < 0 ) 跳出循环 ()如果真 (_取出数据 (缓冲区指针, 原始长度, pData, 真) ≠ 1 )跳出循环 ()包数据指针 = 取变量数据地址 (pData ) + 4 如果真 (包数据指针 = 4 ) 跳出循环 ()__调用子程序 (回调子程序, 客户端句柄, 连接ID, 包数据指针, 包数据长度 )判断循环尾 ()|
_取出数据 | 整数型 | | |
缓冲区指针 | 整数型 | | | | 取出的数据长度 | 整数型 | | | | 取出的数据 | 字节集 | | | | 移除数据 | 逻辑型 | | | |
变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_缓冲区 | IBufferPtr | | | 局_剩余的数据长度 | 整数型 | | | 局_剩余的数据 | 字节集 | | |
局_缓冲区. Attach (缓冲区指针 )如果真 (局_缓冲区. Size () < 取出的数据长度 )返回 (0 )局_剩余的数据长度 = 局_缓冲区.Size () - 取出的数据长度取出的数据 = 指针到字节集 (局_缓冲区. Get (), 取出的数据长度 )如果真 (移除数据 )局_剩余的数据 = 指针到字节集 (局_缓冲区. Get (取出的数据长度 ), 局_剩余的数据长度 )局_缓冲区. Free ()如果真 (局_剩余的数据长度 > 0 )局_缓冲区. Cat (局_剩余的数据 )返回 (1)
我用的push模型 pull改下那个取出数据应该可以用的
|
|