zoukankan      html  css  js  c++  java
  • python全栈开发day28-网络编程之粘包、解决粘包,上传和下载的作业

    一、昨日内容回顾

        1.  tcp和udp编码

        2.  自定义mysocket解决编码问题

        

    二、今日内容总结

      1.粘包

        1)产生粘包原因:

          (1)、接收方不知道消息之间的边界,不知道一次性要取多少字节的数据造成的。

          (2)、数据包较小且时间间隔较小,由于合包机制和Nagle算法,将合成一个大包发送过去,由于接收方不知道精准的拆包机制导致粘包

        2)产生粘包的两种情况

          (1)、发送端需要等缓冲区满才将数据发送出去,产生粘包,(数据包小,时间间隔短,合到一起,产生粘包)

          (2)、接收端不及时接收缓冲区的包,造成接收数据混乱(客户端发送了一段数据,服务端只收了一小部分,服务端下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包

      2.解决粘包

        思路:

        1、让接收端知道发送数据的大小,发送要传送文件的大小等信息给接收端,这样产生新问题,这个传送文件大小等的信息字典因为不知道他的长度,可能和后边要传送的文件数据产生粘包。

        2、将传送文件大小等的信息字典通过struct模块中的pack方法打包成固定大小为4的包数据,在接收端通过接收4字节的大小包并unpack解包,获取文件信息数据,这样就可以完美避免粘包了。

      3.作业

      4.其他知识总结

        1.获取文件大小有两种方法:

          1)os.path.getsize(path文件绝对路径)

          2)os.stat(path文件绝对路径).st_size

  • 相关阅读:
    驾照更换说明
    批处理创建快捷方式
    AC中保存数据与查询数据
    logger日志模块
    如何将python脚本转化为exe
    numpy学习
    request是个什么东西
    django的test文件的使用方式
    高频正则表达式
    dir 的作用
  • 原文地址:https://www.cnblogs.com/wuchenggong/p/9145616.html
Copyright © 2011-2022 走看看