Wishlist 0 ¥0.00

解读断点续传的基本原理

       断点续传的理解可以分为两部分:一部分是断点,一部分是续传。断点的由来是在下载过程中,将一个下载文件分成了多个部分,同时进行多个部分一起的下载,当某个时间点,任务被暂停了,此时下载暂停的位置就是断点了。续传就是当一个未完成的下载任务再次开始时,会从上次的断点继续传送。
  
  使用多线程断点续传下载的时候,将下载或上传任务(一个文件或一个压缩包)人为的划分为几个部分,每一个部分采用一个线程进行上传或下载,多个线程并发可以占用服务器端更多资源,从而加快下载速度。
  在下载(或上传)过程中,如果网络故障、电量不足等原因导致下载中断,这就需要使用到断点续传功能。下次启动时,可以从记录位置(已经下载的部分)开始,继续下载以后未下载的部分,避免重复部分的下载。断点续传实质就是能记录上一次已下载完成的位置。
 
  断点续传的过程
  ①断点续传需要在下载过程中记录每条线程的下载进度;
  ②每次下载开始之前先读取数据库,查询是否有未完成的记录,有就继续下载,没有则创建新记录插入数据库;
  ③在每次向文件中写入数据之后,在数据库中更新下载进度;
  ④下载完成之后删除数据库中下载记录。
  
  断点续传在HTTP请求上和一般的下载有所不同,客户端浏览器传给Web服务器的时候要多加一条信息——从哪里开始(HTTP请求变量)。要实现HTTP断点续传,Web服务器必须支持HTTP/1.1(相对于HTTP/1.0老版本)。
  HTTP请求是有一个Header的,里面有个Range属性是定义下载区域的,它接收的值是一个区间范围,比如:Range:bytes=0-10000。这样我们就可以按照一定的规则,将一个大文件拆分为若干很小的部分,然后分批次的下载,每个小块下载完成之后,再合并到文件中;这样即使下载中断了,重新下载时,也可以通过文件的字节长度来判断下载的起始点,然后重启断点续传的过程,直到最后完成下载过程。
 
  FTP实现断点续传
  FTP协议也可以支持断点续传下载数据,基本原理是用get命令拿数据的时候在文件名后面加上要获取的起始位置。FTP实现断点续传有三个条件:
  ①断点续传需要服务器的支持,FTP服务器必须能提供断点续传的功能。
  传统的FTP Server是不支持断点续传的,因为它不支持REST指令;目前包括IIS和大部分的FTP架设软件都有了这个功能。用Serv-U架设FTP服务器就能支持断点续传。
  ②支持断点续传的下载工具软件
  QQ旋风、迅雷、影音传送带等大多下载软件都支持断点续传;IE浏览器5.0以前的版本默认的自带下载方式不支持断点续传。在手机上,UC浏览器支持断点续传,能够自动存储已下载的部分,重新打开之后可以继续在已下载部分的基础上继续下载。
  ③FTP服务器上的文件要与下载到硬盘中的文件名相同。
  在使用IE下载文件时,遇到网络中断,不需要重新启动机器,也可实现断点续传。前提是,在恢复下载、开始断点续传并提示再次保存文件时,要使用和第一次下载时相同的路径和文件名。

FTP断点续传

一,最重要的一点,断点续传需要服务器的支持,这个是必要条件。       
  传统的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实现断点续传

 

FTP客户端实现要建立两个通道,一个控制命令通道,让FTP服务器知道客户端要干什么,一个数据传输通道。所谓的两个通道只不过是两个调用了connect函数的连接,只是控制命令通道专门用来传输一些字符串命令信息,而数据通道则是用来传输文件。控制命令通道一定是由客户端向服务器的连接(默认的端口是21,也可以指定端口,这要看服务器的设置)。连接的过程完成了FTP的登录。数据通道则不一定啦,具体哪个连哪个,请看下面对PASV命令的解释。 

 

  其实FTP断点续传的原理很简单,可分为断点下载和断点上传。 

  客户端的实现步骤如下: 

一、下载:  

1、向服务器发送“REST + 本地文件长度”命令,告诉服务器,客户端要断点下载了。这时服务器还不知道客户端要下载哪个文件; 

   要实现FTP的断点续传,FTP服务器必须支持REST指令,这条指令在FTP协议文本RFC959中就已经定义了,不过它不是FTP服务器必须支持的指令。一般,你可以在下载前使用REST 100命令进行实验,如果服务器正常执行了这条命令,说明该服务器支持FTP断点续传。REST后面跟的数表示下载文件的起始位置,而REST 0表示从文件最开始处下载。REST命令本身并不执行下载功能,你仍需要使用RETR命令执行下载工作。 

2、向服务器发送“RETR + 文件名”命令,通知服务器要下载的文件名,这时服务器开始定位文件指针读文件并发送数据。 

3、客户端定位本地文件指针(文件末尾); 

4、两端的准备工作都做完了以后,客户端创建socket,以被动或非被动方式建立数据通道,循环调用recv接收数据并追加入本地文件; 

 

二、上传: 

1、获取服务器上和本地要上传文件的同名文件大小; 

2、向服务器发送“APPE + 文件名”,通知服务器,接下来从数据通道发送给你的数据要附加到这个文件末尾。 

3、定位本地文件指针(和FTP上文件大小相同的位置) 

4、从文件指针处读数据并发送。 

 

  好了,FTP断点续传的原理就这么简单。代码里将断点上传和断点下载放到同一个函数(MoveFile)里,通过get参数说明是上传还是下载。当然,整个FTP类的实现有800多行,包括登录、退出、获取FTP文件大小、删除FTP服务器上文件、响应服务器,解析响应信息等函数。相应的注释代码里都有,这里就不一一熬述了。 

 

  这里重点说说PASV模式,即被动模式,这是FTP命令里比较不容易理解的一个,这条命令请求服务器在某个端口(非FTP默认端口或控制命令端口)创建一个监听socket,服务器创建的端口号会在客户端的控制命令通道上得到响应。得到这个端口号后,客户端就可以创建新的socket(数据通道)connect过去,并进行文件传输等工作。否则,如果为非被动模式,那么监听的socket由客户端创建,服务器connect过来。 

 

  对于这条命令的存在我是这么理解的,存在这么一种情况:客户端的IP是个内网的IP,服务器的IP是个外网的,当进行数据传输时内网的IP对于服务器是不可见的,只有由服务器启动监听socket才能建立数据通道,所以必须以被动模式进行。:)

How to activate an XP Mode VM on Windows 10

You are running Windows 10 and you want keep using an XP Mode virtual machine after its activation has expired.

Windows XP Mode only works under Windows 7. If you need to run XP on Windows 10, you should start from scratch with a new XP install and a valid XP licence key.

However, if you are one of the many people who have an XP Mode virtual machine and need to continue using it for some reason, this is one way to achieve that.

Warning: this may violate the XP Mode licensing agreement.

There are many ways to run an XP VM on Windows 10. One way is to use Oracle VM VirtualBox and either use the existing XP Mode or extract the files from an XP Mode download you have.

However, running XP Mode on anything other than Windows 7 will result in the XP virtual machine not being activated, and there does not appear to be any way to activate it.

If your XP VM has already had its activation expire, you will not be able to login.

To bypass this:

  • Start your XP VM in Safe Mode (press F8 while booting)
  • Select “Safe Mode with Command Prompt”
  • Once it has booted to a command prompt, type "start explorer" to start explorer

You will now be logged into your expired XP VM, but it is still not activated.

To bypass the activation:

  • Click on “Start”, then “Run”, and type in “regedit” (presumably “start regedit” in the command prompt would achieve the same thing)
  • Go to “HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\WPAEvents”
    • Expand “WPAEvents”, you’ll see the “OOBETimer”, double-click it, and delete the original value and type in “FF D5 71 D6 8B 6A 8D 6F
        D5 33 93 FD”
    • Click “OK”
  • Right click on the “WPAEvents” folder and click on “Permissions…”
    • under “SYSTEM”, click “Deny Full Control”
    • Click “Yes” to the warning message
  • Reboot back to normal Windows XP

Warning: this may violate the XP Mode licensing agreement.

为什么我的戴尔台式老是出现DELL RESOURCE CD?

去添加删除程序,把它卸载掉就可以了。

这是DELL DRIVERS AND UITILIES 光盘里面的一个小软件,安装不成功就会这样。

About Us

Since 1996, our company has been focusing on domain name registration, web hosting, server hosting, website construction, e-commerce and other Internet services, and constantly practicing the concept of "providing enterprise-level solutions and providing personalized service support". As a Dell Authorized Solution Provider, we also provide hardware product solutions associated with the company's services.
 

Contact Us

Address: No. 2, Jingwu Road, Zhengzhou City, Henan Province

Phone: 0086-371-63520088 

QQ:76257322

Website: 800188.com

E-mail: This email address is being protected from spambots. You need JavaScript enabled to view it.