第一,最重要的一点,断点续传需要服务器的支持,这个是必要条件。
传统的FTP SERVER是不支持断点续传的,因为它不支持REST指令,传统的FTP指令(我是指服务器端指令)并不包括REST指令。
第二,客户端要知道使用REST等一系列指令来作断点续传。
看看断点续传的详细过程(FTP SERVER):
首先客户端使用REST指令来告诉FTP SERVER它需要从文件的某个点开始传,接着用STOR或者RETR命令开始传文件,大概的命令的流程如下:
TYPE I
200 Type set to I.
PASV
227 Entering Passive Mode (204,48,18,69,98,250)
REST 187392
350 Restarting at 187392. Send STORE or RETRIEVE to initiate transfer.
RETR /pub/audio/pci/maestro-3/win2k/1056.zip
150 Opening BINARY mode data connection for /pub/audio/pci/maestro-3/win2k/1056.zip (936098 bytes).
首先使用TYPE命令告诉FTP SERVER使用BINARY模式传送文件;
然后使用PASV命令告诉FTP SERVER使用被动打开模式来传送文件;
接着使用REST 187392指令告诉FTP SERVER要从文件的187392字节开始传送;
最后使用RETR指令来传送文件。
从上面可以看出,这个FTP SERVER支持REST指令,有的FTP SERVER(特别的老的)是不支持这个指令的,这时即使FTP CLIENT支持断点续传也一点用都没有!
支持断点的FTP SERVER:Serv-U FTP,还有一系列的新出现的FTP SERVER;
不支持断点的:IIS4以前版本所带的都不行,IIS5 有,不家可以测试一下,登录进FTP SERVER,然后输入REST 1000命令,看服务器是否认识,认识就是支持断点。
上面说的是FTP SERVER的断点,HTTP的断点续传是这样的:
在以前版本的HTTP SERVER也是不支持断点的,HTTP/1.1开始就支持了,具体如下:
在HTTP请求的头部信息里面,通常是这样的:
GET http://xxx.xxx.xxx.xxx/index.html HTTP/1.1
Host:www.163.net
Accept:*/*
上面是HTTP请求头的主要内容,是浏览器等客户端发给HTTP SERVER的信息。
在这个请求头里面,第一行叫做Request Line,GET叫做请求方法(通常得到一个HTML页面都是用GET,CGI等请求是用POST),http://bbs.netbuddy.org/index.html是URL,HTTP/1.1为版本号。
Host:bbs.netbuddy.org是HTTP服务器名字,这也是HTTP/1.1的新东东,以前做虚拟主机可是要一个主机名对应多个IP,现在好了......呵呵,这个离题太远,不说了)
要做断点续传,浏览器等客户端需要在请求头里面发送
Range: bytes=1140736-
这样的请求,就是告诉HTTP SERVER,这个文件要从1140736字节开始传送。
最后一点,大家看了上面的描述可能会有一个问题,那么多点传送怎么做呢?那就是多起几个线程,连接到服务器,用断点指令来传送文件,在传送的过程中,会检查前面的(比如说第一个蚂蚁)得到的文件的部分是否超过了后面的(比如说第二个蚂蚁)的起点,相等就停前面的蚂蚁,最后再合并几个部分,就得到一个完整的文件了
原文作者 xxbin[/size][/size][/size][/size][/size]
分享到:
相关推荐
FTP上传和断点续传是网络传输中两个重要的概念,特别是在大文件传输场景下,而更新进度条则是提升用户体验的关键元素。在这个公司项目的第一个版本中,我们关注的是如何实现一个功能完善的FTP上传系统,该系统支持...
用apache的FTP实现断点续传 - janestone的专栏 - 博客频道 - CSDN.NET (2012年5月21日) java实现FTP多线程断点续传,上传下载! - java学习与交流 - j2ee学习网 - j2ee学习网 (2012年5月21日) 用 Java 实现断点续传 ...
c#上传下载ftp(支持断点续传) 代码完全通俗易懂 注释完整
而"多线程"和"断点"这两个文件名可能是指相关示例代码或文档,可以进一步帮助你理解和实践Java FTP的多线程下载和断点续传。 在实际应用中,还需要考虑其他因素,如错误处理、网络状况的监控、文件完整性检查等。...
断点续传功能是FTP的一个重要特性,允许用户在上传或下载大文件时中断操作,并在稍后从停止的地方继续,这对于网络不稳定或者长时间传输的情况非常有用。 libcurl是一个流行的开源库,支持多种网络协议,包括FTP,...
点量Http、FTP多线程断点续传下载组件(下载DLL)的开发目的是让用户可以无需关心Http/FTP协议的具体细节,只需要几十行甚至几行代码,便可以实现一个功能完善的Http/FTP下载软件。点量Http/FTP下载组件(DLL)支持...
提供的代码片段展示了如何使用Apache Commons Net库中的`FTPClient`来实现FTP连接和断点续传的基础框架。通过定义`ContinueFTP2`类并实现`Runnable`接口,代码为每个待传输的文件创建了一个线程。`UploadStatus`和`...
ftp 断点续传实现 FTP 是一个非常常用的文件传输协议,它可以帮助用户上传和下载文件到远程服务器中。...通过了解 FTP 协议和断点续传的实现方法,我们可以更好地使用 FTP 协议来上传和下载文件。
### FTP断点续传编程原理详解 #### 一、引言 FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。随着网络技术的发展,FTP的功能也在不断拓展和完善。其中,“断点续传”功能是用户非常关心...
在实际应用中,很多下载管理器软件如Internet Download Manager (IDM) 和Free Download Manager (FDM) 都实现了基于HTTP和FTP的多线程下载和断点续传功能。这些工具通常包含复杂的算法来优化下载策略,比如动态调整...
总之,Java中的FTP断点续传功能是通过与FTP服务器的交互,结合特定的FTP命令和状态管理来实现的。这种功能对于任何需要进行大量文件传输的系统都非常重要,因为它提高了效率并减少了网络资源的浪费。
通过创建自定义的`NSURLSessionConfiguration`,可以设置支持FTP和断点续传的配置。 3. **断点续传机制**: 断点续传需要客户端记录当前文件的传输进度,通常是通过保存服务器返回的文件大小和已下载的部分来实现。...
8. **测试和调试**:在实际环境中测试你的FTP断点续传功能,确保它能在各种网络条件下正常工作。使用FTP服务器模拟工具可以帮助你模拟不同的网络状况。 9. **安全性**:虽然VS2008不直接支持FTP over TLS/SSL(FTPS...
总的来说,Java Apache FTP库提供了强大的FTP客户端功能,支持主被动模式切换和断点续传,为开发者构建可靠的文件传输应用提供了便利。通过熟练掌握这些知识点,你可以在开发中有效地处理大文件的网络传输,提高系统...
随着网络环境的复杂化和技术的进步,FTP的一些基础功能已不能满足用户的全部需求,断点续传便是其中之一。本文将深入探讨FTP断点续传的设计思路及其实现原理。 #### 一、FTP断点续传的基本概念 FTP断点续传指的是...
Ftpc.cfg可能是一个配置文件,其中包含了用户设定的FTP连接参数和断点续传的相关设置。配置文件通常以文本形式存在,便于用户编辑和查看。Ftpc.dll则可能是一个动态链接库文件,它包含了FTP工具的部分核心功能,如...
本项目“MFC实现FTP客户端的上传下载(断点续传)”是基于MFC技术实现的,能够实现在FTP服务器上进行文件的上传和下载,并且具备断点续传功能,这对于大文件传输来说尤其重要,因为如果在传输过程中中断,可以从上次...
在本文中,我们将深入探讨如何使用C#编程语言来实现FTP(文件传输协议)上传功能,特别是支持断点续传的特性。FTP是一种标准网络协议,用于在客户端和服务器之间交换文件。C#中的System.Net命名空间提供了丰富的类库...
在本文中,我们将深入探讨如何在Windows Presentation Foundation (WPF) 应用程序中实现FTP(File Transfer Protocol)上传和下载功能,同时支持断点续传,并解决在显示进度条时可能遇到的问题。WPF是一种.NET框架下...