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只能传字节
    示例
  • 相关阅读:
    手机号/身份证加星处理
    手机号,邮箱等验证表达式
    导入Excel工具类
    ajax 跨域的解决 cors
    centos7 防火墙命令
    redis 常见问题总结
    数据库(1)
    设计模式和常用的设计模式
    mvc 模式 与各部分的实现
    线程基础(1)
  • 原文地址:https://www.cnblogs.com/xiamenghan/p/9918041.html
Copyright © 2011-2022 走看看