一、昨日内容回顾

    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

python全栈开发day28-网络编程之粘包、解决粘包,上传和下载的作业的更多相关文章

  1. Python全栈开发-Day8-Socket网络编程

    本节内容 断言 Socket构建框架 ftp构建框架 Socket粘包 Socket介绍 Socket参数介绍 基本Socket实例 通过Socket实现简单SSH SocketServer 支持多用 ...

  2. python全栈开发day75-用户注册页面ajax实现,用户头像上传、预览、展示

    一.昨日内容回顾 1. 内容回顾 1. BBS项目登录 1. 登录用form组件和auth模块 1. form组件做校验很方便 2. auth模块 - authenticate(username=xx ...

  3. Python全栈【Socket网络编程】

    Python全栈[socket网络编程] 本章内容: Socket 基于TCP的套接字 基于UDP的套接字 TCP粘包 SocketServer 模块(ThreadingTCPServer源码剖析) ...

  4. python全栈开发day27-网络编程

    回顾:1.两个架构:C/S   B/S(统一了应用的接口)2.同一个电脑两个py文件通信(文件)3.两个电脑通信---网线4.交换机的通信方式:广播.单播.组播5.arp协议:通过ip地址找到对应的m ...

  5. python全栈开发-Day7 字符编码总结

    python全栈开发-Day7 字符编码总结 一.字符编码总结 1.什么是字符编码 人类的字符--------->翻译--------->数字 翻译的过程遵循的标准即字符编码(就是一个字符 ...

  6. 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂

    Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...

  7. Python全栈开发相关课程

    Python全栈开发 Python入门 Python安装 Pycharm安装.激活.使用 Python基础 Python语法 Python数据类型 Python进阶 面向对象 网络编程 并发编程 数据 ...

  8. Python 全栈开发【第0篇】:目录

    Python 全栈开发[第0篇]:目录   第一阶段:Python 开发入门 Python 全栈开发[第一篇]:计算机原理&Linux系统入门 Python 全栈开发[第二篇]:Python基 ...

  9. Python全栈开发【面向对象】

    Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...

随机推荐

  1. 996ICU与程序猿的个人成长

    目录 规划 学习 专业领域知识 知识广度 第二职业 理财 借势 添砖加瓦 最近一段时间,996ICU在互联网界引发"大地震",从普通员工.行业大佬甚至官媒都进行了发声,大家对这个问 ...

  2. 解决Sublime Text中文标题出现异常情况

    打开首选项-设置-用户 用以下覆盖原来配置,保存之后重新打开编辑器即可 {        "dpi_scale": 1.0,        "font_face" ...

  3. Asp.net MVC Session过期异常的处理

    一.使用MVC中的Filter来对Session进行验证 (1)方法1: public class MyAuthorizeAttribute : FilterAttribute, IAuthoriza ...

  4. 第18月第25天 github下载单个文件夹 git命令

    1. 用 SVN 即可. 举例说明: 譬如这个项目: Mooophy/Cpp-Primer · GitHub, 我只想看 ch03 文件夹的代码怎么办? 先打开 ch03, 其 URL 为: &quo ...

  5. 第18月第20天 tensorflow安装

    1. # Mac OS X $ sudo easy_install pip # Mac OS X, CPU only: $ sudo easy_install --upgrade six $ sudo ...

  6. Maxwell入门

    1 下载tar包 Download binary distro: https://github.com/zendesk/maxwell/releases/download/v1.19.4/maxwel ...

  7. A - 最大子矩阵 HYSBZ - 1084 (DP)

    题目链接:https://cn.vjudge.net/contest/281963#problem/A 题目大意:中文题目 具体思路:观察到m<=2,所以我们可以对两种情况进行单独讨论,当m== ...

  8. python基础知识~配置文件模块

    一 配置文件模块   import ConfigParser ->导入模块  conf = ConfigParser.ConfigParser() ->初始化类二 系统函数  conf.r ...

  9. 线路板(PCB)制作流程中英文对照表

    线路板(PCB)流程术语中英文对照流程简介:开料--钻孔--干膜制程--压合--减铜--电镀--塞孔--防焊(绿漆/绿油) --镀金--喷锡--成型--开短路测试--终检--雷射钻孔A. 开料( Cu ...

  10. 深入理解linux内核v4l2框架之videobuf2【转】

    转自:https://blog.csdn.net/ramon1892/article/details/8444193 Videobuf2框架 1. 什么是videobuf2框架? 它是一个针对多媒体设 ...