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没有问题。
     
  • 相关阅读:
    silverlight的TranslateTransform 的使用
    720 JavaScript函数的this指向
    JavaScript数组
    JavaScriptDOM事件
    JavaScript流程控制语句
    CSS布局案例
    JavaScriptDOM基础
    JavaScriptDOM事件
    JavaScript基础语法
    JavaScript的String对象相关方法
  • 原文地址:https://www.cnblogs.com/corecible/p/4909174.html
Copyright © 2011-2022 走看看