zoukankan      html  css  js  c++  java
  • 粘包

    粘包主要是因为接收方不知道一次性提取多少字节的数据所造成的

    解决粘包的方案:自定义报头

      第一种方法:发送方先用报头传输数据的长度再发送数据,接受方先接受数据的长度信息再根据长度信息来获取知道获取的长度等于总长度

      第二种方法:自定义复杂报头  完成发送一些额外的信息。先将要发送的额外数据打包成一个字典,将字典转为bytes类型,计算字典的bytes长度并发送,再发送字典数据,最后发送真实数据

    #先把需要的信息打包成一个字典
    dic = {'name':'博客园',
                'md5':'3714718355'
                'len':1035}
    #字典转字符串
    head_dic = str(dict)
    bytes = head_dic.encode('utf-8')
    #先发送这个字典字符串的长度
    dic_len = len(head_dic)
    #将长度转化为字节
    bytes_len = struct.pack('i',dic_len)
    #发送报头的长度
    c.send(bytes_len)
    #发送真实数据
    c.send(bytes)
    注意:TCP只能传字节
    示例
  • 相关阅读:
    深度学习的优化算法
    基于双向的CNN的细粒度物体识别论文翻译
    LSTM公式推导
    结巴分词python脚本
    eval() python 中的
    C++编译原理
    extern,以及在linux头文件中的应用
    iostream源码
    LINUX命令
    apt-get
  • 原文地址:https://www.cnblogs.com/xiamenghan/p/9918041.html
Copyright © 2011-2022 走看看