专栏首页Python小屋Python在应用层实现UDP协议的可靠传输

Python在应用层实现UDP协议的可靠传输

功能描述:

使用UDP协议传输文件,在应用层实现可靠传输,避免传输层不保序和可能丢包造成的不可靠传输问题。

基本思路:

在发送端使用一个线程把要发送的内容进行分块传输,发送时携带每个分块的序号,同时使用另外一个线程接收对方的确认信息,如果所有分块都得到对方的确认,停止传输。

在接收端对收到的每个分块进行确认,把每个分块临时存储在缓冲区中,全部分块接收完成之后按序号进行排序,最后写入文件。

发送端代码:

接收端代码:

运行效果:

http://mpvideo.qpic.cn/0bf2pmabiaaanmae2m46njpfa66dcr5qafaa.f10002.mp4?dis_k=99796298e82d050820d84f13565cb57f&dis_t=1588927636

本文分享自微信公众号 - Python小屋(Python_xiaowu),作者:董付国

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python花式编程案例集锦(9):sorted()函数中消失的cmp参数

    明天开启全国巡讲Python模式,连续8场20天讲课,外加路上来回大约16天,这个假期有的忙了。所以接下来的一段时间里不一定能像以前更新的那么频繁,我尽量。

    Python小屋屋主
  • Python+django网页设计入门(14):使用中间件对抗爬虫

    Python+django网页设计入门(12):使用Bootstrap和jQuery

    Python小屋屋主
  • Python使用集合实现素数筛选法

    首先生成指定范围内的所有自然数,然后从前往后遍历其中的数字,并分别删除这些数字的倍数,最后剩下的数字都是素数。 很久很久以前,曾经写过一个使用列表+filter...

    Python小屋屋主
  • 新能力|云调用支持微信支付啦!

    小程序·云开发的云调用能力,让用户可以免鉴权快速调用微信的开放能力,极大节约了开发成本。现在,云调用已支持微信支付,用户在云开发控制台可直接绑定微信支付商户,在...

    腾讯云开发TCB
  • 使用Sublime Text 3作为Py

     Sublime Text 3是一款非常好用的编辑器,用它作为Python编辑器时,需要解决中文支持问题,常见问题有两个,一是中文乱码问题,二是运行时Pytho...

    py3study
  • Docker部署网站之后映射域名

    Docker中部署tomcat相信大家也都知道,不知道的可以google 或者bing 一下。这里主要是为了记录在我们启动容器之后,tomcat需要直接定位到网...

    Isaac Zhang
  • 放大镜下的央行数字货币

    认识不少做区块链的朋友,近一段时间大家都在转发央行数字货币 DC/EP 相关的文章。加上 Libra 2.0 白皮书发布和新基建包括区块链等新闻,让沉寂一阵子的...

    Henry Zhang
  • 28-ESP8266 SDK开发基础入门篇--编写TCP 客户端程序(官方API版,非RTOS版)

    注:这节实现的功能是WIFI模块作为TCP 客户端,连接咱的TCP服务器,然后实现透传

    杨奉武
  • Android为每个应用分配多少内存?如何进行性能调优

    可以看到,设置largeHeap为true时, 通过rt.maxMemory();获取的值为512M。

    Android架构
  • CM: 使用ICF node实现对附件的读取

    1. 创建一个新的class,实现interface IF_HTTP_EXTENSION:

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券