ftp断点续传

一、这里假设大家对ftp协议有一定的了解,仅仅讲述ftp断点续传原理,如果对ftp协议不懂,可以在网上查阅,有大把资料

二,最重要的一点,断点续传需要服务器的支持,这个是必要条件。       
  传统的FTP   SERVER是不支持断点续传的,因为它不支持REST指令,传统的FTP指令(我是指服务器端指令)并不包括REST指令。    
  支持断点的FTP   SERVER:Serv-U   FTP,还有一系列的新出现的FTP   SERVER;       
  不支持断点的:IIS4以前版本所带的都不行,IIS5   有,不家可以测试一下,登录进FTP   SERVER,然后输入REST   1000命令,看服务器是否认识,认识就是支持断点。
  
 三、ftp断点续传命令流程
 
 1)客户端上传流程 
  TYPE   I       
  200   Type   set   to   I.       
  PASV       
  227   Entering   Passive   Mode   (204,48,18,69,98,250)       
  SIZE 100000004.avi 74
  213 741966 66        
  REST 741966 67
  350 Restarting at 741,966. Send STORE or RETRIEVE. 106
  STOR 100000004.avi 74
  150 Opening BINARY mode data connection for 100000004.avi. 114
  
  2)服务器端下载流程
1、向服务器发送“REST + 本地文件长度”命令,告诉服务器,客户端要断点下载了。这时服务器还不知道客户端要下载哪个文件; 
          要实现FTP的断点续传,FTP服务器必须支持REST指令,这条指令在FTP协议文本RFC959中就已经定义了,不过它不是FTP服务器必须支持的指令。一般,你可以在下载             前使用REST 100命令进行实验,如果服务器正常执行了这条命令,说明该服务器支持FTP断点续传。REST后面跟的数表示下载文件的起始位置,而REST 0表示从文件             最开始处下载。REST命令本身并不执行下载功能,你仍需要使用RETR命令执行下载工作。 
2、向服务器发送“RETR + 文件名”命令,通知服务器要下载的文件名,这时服务器开始定位文件指针读文件并发送数据。 
3、客户端定位本地文件指针(文件末尾); 
4、两端的准备工作都做完了以后,客户端创建socket,以被动或非被动方式建立数据通道,循环调用recv接收数据并追加入本地文件;
    
    
四、附加上客户端断点续传文件时,完整的网络抓包工具数据,和FTP服务器ServU及其破解补丁

      网络抓包数据:http://download.csdn.net/detail/yuanbinquan/9376522

      FTP服务器ServU及其破解补丁:http://download.csdn.net/detail/yuanbinquan/9376546

     ftp断点续传网络抓包数据截图:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QT是一种跨平台的C++库,可以方便地进行ftp断点FTP断点是指在文件输过程中,当输中断后,可以在下次输时从中断的位置继输,而不需要重新输整个文件。 在QT中实现ftp断点的关键是利用Qt的QNetworkAccessManager类和QNetworkReply类。首先,我们需要使用QNetworkAccessManager类建立与FTP服务器的连接,并发送GET命令获取文件。在QNetworkReply的finished()信号槽中可以检查文件的是否已下载完整,如果未完整下载,则可以通过设置Range请求头部来实现断点。这里的Range请求头部指定了从断点位置开始的字节数到文件末尾的字节数。 接下来,我们需要获取断点位置,可以通过QFile的size()方法获取已经下载的文件大小,然后将断点位置递给FTP服务器。在Qt的QUrl的setEncodedQueryItem()方法中设置文件下载的起始位置。 等到下载完整个文件后,我们可以使用QFile类的seek()方法将文件指针移动到断点位置处,然后重新发起GET请求,继断点位置下载文件剩余部分。在QNetworkReply的finished()信号槽中,再次检查文件是否已下载完整,如果未完整下载,则继进行断点。 通过以上步骤,我们就可以在QT中实现ftp断点功能。在实际应用中,我们还需要处理网络连接的中断、服务器断开连接等情况,以确保断点的可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值