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;
            }
        }
    }
  • 相关阅读:
    RAD Studio最终版合集
    cxGrid 锁定一行,让该行数据不能编辑
    跨平台打开一个URL的方法
    【转】DELPHI开始支持LINUX DOCKER
    HTTP请求的拦截
    SVG图像
    Kafka
    HBase分布式集群部署
    HBase
    Mapreduce提交YARN集群运行
  • 原文地址:https://www.cnblogs.com/wangshaowei/p/9358335.html
Copyright © 2011-2022 走看看