【大话QT之十】实现FTP断点续传

本文介绍了如何在QT中实现FTP断点续传功能,包括上传和下载。通过Qftp类结合原始FTP命令,如TYPE I、PASV、APPE和REST,实现与FTP服务器的交互。关键步骤包括设置服务器为被动模式、指定追加或恢复传输的位置,以及利用QTcpSocket进行数据传输。目前实现为单线程,未来计划扩展到多线程和队列处理。
摘要由CSDN通过智能技术生成

应用需求:

        网盘开发工作逐步进入各部分的整合阶段,当用户在client改动或新添加一个文件时。该文件要同步上传到server端相应的用户文件夹下,因此针对传输数据(即:上传、下载)这一块如今既定了三种传输方式,即:Ftp传输、HTTP传输以及基于UDT的传输。

且这三种传输数据方式是可配的,能够通过不同的接口调用。相比这三种方式。基于UDT的大量文件传输是比較值得研究与创新的地方,它在底层是基于UDP,在上层实现了可靠性的控制;同一时候它充分考虑到了基于在公网环境下基于Tcp进行传输时拥塞控制算法的缺点,实现了自己的拥塞控制算法,在实际測试中其性能也是明显高于基于Tcp的传输。

关于UDT实现文件传输仅仅进行了技术调研,还没有真正实现。这一部分内容将在兴许文章中提及。这三天的时间仅仅实现了基于FTP的支持断点续传的文件上传、下载。

实现原理:

        离我们近期的断点续传的应用样例是:迅雷。当使用迅雷下载一个大文件时,它实现了以下的功能:1> 电脑突然断电或程序突然退出后,当我们又一次启动迅雷时它还会从程序退出时已经下载的文件点继续向后下载,而不是文件又从头開始下载。2> 能够设置採用多个线程同一时候下载,每一个线程仅仅下载文件里的某一部分,比如:使用三个线程下载一个9000个字节的文件。则第一个线程下载第1—3000个字节,第二个线程下载第3001—6000个字节,第三个线程下载第6001—9000个字节。这三个线程是同一时候下载一个文件,仅仅是下载不同的部分。它会把下载的文件片段暂存在某个位置,当三个线程所有下载完毕时再拼成一个完整的文件。

这里不用多说,其长处显而易见。

        事实上,断点续传实现的原理非常easy,就是不管是上传还是下载时都能够实时记录下已经上传了或下载了多少字节,假设中间由于某种原因传输断开,下载启动时仅仅须要再又一次从已经下载的位置继续下载或上传就能够了。

利用Qftp实现断点续传:

        QT中有一个实现Ftp的类:Qftp,它提供了主要的ftp的使用方式,连接ftpserver:connectToHost;登录:login。上传:put;下载:get。使用这些方法能够实现与ftpserver交互实现文件上传、下载。

可是使用它原

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值