zoukankan      html  css  js  c++  java
  • tcp长连接分包方法

    tcp长连接分包的四种方法
    1.消息长度固定
    2.使用特殊的字符串作为消息边界。比如http协议的headers以“ ”为字段的分隔符
    3.在每条消息的头部加一个长度字段。这是最常见的
    4.利用消息本身的格式来分包。比如xml中的<root></root>的配对等

    说一下在头部加消息长度字段分包的方法
    假如每条消息有一个4字节的头部,存放字符串的长度。比如消息“hello”,字节流为
    0x00,0x00,0x00,0x05,‘h’,'e','l','l','o'
    写一段伪代码展示分包

    void OnMessage()
    {
        while(接收缓冲buf可读字节>=头部长度4)
        {
            len = 包的长度
            if(len>65536 or len<0)
            {
                关闭连接
            }
            else if(buf>=len+4)
            {
                从buf中提取出4字节;
                message=将buf后的len长度内存赋给message
                messagecallback(message)调用用户代码处理message
                从buf中移除len长度
            }
            else
            {
                不够一个包的长度,等待下次消息到来,break;
            }
        }
    }
  • 相关阅读:
    2020软件工程作业00
    2020软件工程作业03
    2020软件工程作业02
    软件工程作业01
    2020软件工程作业06
    2020软件工程作业05
    问题清单
    2020软件工程作业04
    2020软件工程作业02
    2020软件工程作业1
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/9358335.html
Copyright © 2011-2022 走看看