zoukankan      html  css  js  c++  java
  • TCP粘包处理 参考spserver

    TCP粘包出现的原因就不在详细描述了。TCP粘包是在做TCP编程时经常会遇到的问题,网上相关的参考也不少,大都都是一个热心人士编写的,
    若仅用于学习就算了,若用真正用于项目还有待考虑。
    本文就简述一下如何利用spserver处理粘包问题。SPserver的性能有多好我也不说了。(嘎嘎)
    处理思路如下:
    1.SP_MultiLineMsgDecoder中的decoder是用于分解包,当然分解的原来是使用‘ ’.我们利用该函数的原来分包。
    2.SP_CircleQueue * mQueue; 用于存储分解后的包。
    3.SP_Buffer 用于存储收到的报文。
    4.那如何读取包呢? spwin32buffer_read( getEvBuffer( session->getInBuffer() ), mFd, -1 ); 在该函数内部,使它使用了itcl判断报文的数量,然后在SP_Buffer分配对应的空间,
    分配函数为if (spwin32buffer_expand(buf, howmuch) == -1)
    5.需要注意的是解包时,需要将完整的包读至SP_CircleQueue中,调用函数为spwin32buffer_remove。
    写完速度测试完全对应 echoServer没有问题。
     
  • 相关阅读:
    磁盘及分区管理
    用户和文件权限管理
    分割文件命令split
    去除重复命令uniq
    数据连接命令join
    数据剪切命令cut和数据粘贴命令pastte
    排序命令sort
    koa-router
    koa入门
    require.ensure的用法;异步加载-代码分割;
  • 原文地址:https://www.cnblogs.com/corecible/p/4909174.html
Copyright © 2011-2022 走看看