360游戏大厅ie下载断点续传了如何续传

断点续传的原理
服务器君一共花费了142.313 ms进行了4次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议
其实断点续传的原理很简单,就是在Http的请求上和一般的下载有所不同而已。
打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:假设服务器域名为wwww.,文件名为down.zip。
GET /down.zip HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-
excel, application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: zh-cn
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 ( MSIE 5.01; Windows NT 5.0)
Connection: Keep-Alive
服务器收到请求后,按要求寻找请求的文件,提取文件的信息,然后返回给浏览器,返回信息如下:
Content-Length=
Accept-Ranges=bytes
Date=Mon, 30 Apr :11 GMT
ETag=W/"02ca57e173c11:95b"
Content-Type=application/octet-stream
Server=Microsoft-IIS/5.0
Last-Modified=Mon, 30 Apr :11 GMT
所谓断点续传,也就是要从文件已经下载的地方开始继续下载。所以在客户端浏览器传给Web服务器的时候要多加一条信息--从哪里开始。下面是用自己编的一个"浏览器"来传递请求信息给Web服务器,要求从2000070字节开始。
GET /down.zip HTTP/1.0
User-Agent: NetFox
RANGE: bytes=2000070-
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
仔细看一下就会发现多了一行RANGE: bytes=2000070-这一行的意思就是告诉服务器down.zip这个文件从2000070字节开始传,前面的字节不用传了。服务器收到这个请求以后,返回的信息如下:
Content-Length=
Content-Range=bytes 786028
Date=Mon, 30 Apr :20 GMT
ETag=W/"02ca57e173c11:95b"
Content-Type=application/octet-stream
Server=Microsoft-IIS/5.0
Last-Modified=Mon, 30 Apr :20 GMT
和前面服务器返回的信息比较一下,就会发现增加了一行:Content-Range=bytes 786028返回的代码也改为206了,而不再是200了。
知道了以上原理,就可以进行断点续传的编程了。
本文地址:,欢迎访问原出处。
不打个分吗?
转载随意,但请带上本文地址:
如果你认为这篇文章值得更多人阅读,欢迎使用下面的分享功能。
小提示:您可以按快捷键 Ctrl + D,或点此 。
大家都在看
现代魔法研究协会欢迎你
阅读一百本计算机著作吧,少年
马丁(Robert C. Martin) (作者), 韩磊 (译者)
软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。《代码整洁之道》提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,《代码整洁之道》作者给出了一系列行之有效的整洁代码操作实践。这些实践在《代码整洁之道》中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。
扫一扫,在手机上阅读
栏目最新博文
23,258 views
183,856 views
13,988 views
13,159 views
14,674 views
21,479 views
9,756 views
166,115 views
10,665 views
11,843 views
栏目博文推荐
10,248 views
4,198 views
4,157 views
11,432 views
5,093 views
13,588 views
7,954 views
13,416 views
4,004 views
7,293 views
当我们不再年轻的时候,当我们不再做程序的时候,唯有这些博客,记录着我们曾经为程序欣喜、为程序付出过汗水的经历。
关于网站与作者
互联网信息太多太杂,各互联网公司不断推送娱乐花边新闻,SNS,微博不断转移我们的注意力。但是,我们的时间和精力却是有限的。这里是互联网浩瀚的海洋中的一座宁静与美丽的小岛,供开发者歇息与静心潜心修炼(愿景)。
“Veda”的本义是知识、启示,希望这里能为开发者提供充足的技术资料。
我的电子邮件gonnsai(,腾讯微博:,欢迎与我联系。您所在的位置: &
WinRAR文件传送时发生断点的续传方法
时间: 15:23:40
编辑:xwgod
来源:下载吧
  我们常常遇到文件在传送的过程中,因为一些意外有时候会出现断点的状况,比如说在使用压缩文件的时候、使用QQ传送文件的时候,设置是使用FlashFXP上传文件的时候,那么,遇到传送文件断点的时候该怎么续传呢?下载吧小编根据不同情况为大家提供了解决方法!  一、用WinRAR实现断点续传
  我们在复制包含大量文件的文件夹时,如果某个文件损坏或者正在被系统使用,复制操作就会被终止,尽管复制了一部分文件到目的地,如果文件众多,将不知道哪些文件已经复制,而哪些文件还没有复制。通常的情况是结束或修复被调用的文件后再重新进行复制,其实利用压缩软件WinRAR就能绕开无法复制的文件,将文件传送到底,还能将未被复制的文件找出来。
  在要复制的文件夹上右击选择“添加到压缩文件”,在弹出的压缩参数设置的“常规”分页中单击“浏览”,定位到复制的目标路径(如E:\\),确定后开始压缩,当碰到无法复制的文件,WinRAR就会弹出一个“诊断信息”对话框提示某文件无法访问,并且继续压缩直到完毕(下图),这样就绕过了不能复制的文件将大多数文件提取出来。到目标路径下将目录解压出来即可。单击图1所示对话框中的“复制到剪贴板”,在记事本等文本编辑工具中粘贴即可看到未能成功复制的文件清单。
  复制WinRAR诊断信息
  小提示:用WinRAR压缩打包复制文件,仅仅对一些文件数量比较多而容量小的情况,对于数量有限并且超大的文件不能准备提取。  二、用QQ传文件断点续传
  我们知道用QQ通过网络和异地的朋友传文件,由于网络故障或者断电死机、电脑意外重启等情况,只要我们重新进行该文件的传输,QQ就会提示“刚才已经接收了的文件大小,是否使用断点续传从上次的位置继续接收?”,单击“继续接收”就会从上次中断的位置处继续接收文件了(下图)。
  QQ断点续传功能
  利用同样的方法,在本地电脑上同时登陆两个QQ号,然后用一个QQ向另外一个发送文件,即使关闭一个聊天窗口或者将电脑重新启动,然后继续传输也能实现断点续传。
  小提示:利用MSN(Windows Live Messenger)中进行文件传输也能实现断点续传。QQ的断点续传功能对于从网络上接收文件,或者在局域网中传文件而遇到意外情况导致传输终止的情况非常有效。  三、自建FTP实现断点继传
  如果经常要在局域网络中进行大量文件传输,遇到网络速度欠佳、对方关机、断电重启等情况,如果用以上的办法还是显得“业余”了点。可以通过Serv-U之类的Ftp服务器软件搭建一个FTP下载服务器,然后用FTP软件来进行文件的复制断点续传。这里我们以最简单的CHKen FTP这款软件来加以说明。
  运行软件进入配置界面,切换到“组设置”下右击选择“新建条目”打开“添加新组”对话框,依次输入组名,设置好传输文件的根目录,注意确保已经勾选“续传”;切换到“用户设置”下右击新建一个用户帐户;切换到“系统设置”选项下设置好端口和线程,最后点击“运行服务”即可启动Ftp服务器了(如下图)。
  CHKen FTP增加新组设置
  启动了Ftp服务器后,我们就可以运行FlashFXP之类的FTP软件来进行大文件复制转移了,由于是采用FTP上传和下载,因此不但速度快而且能够断点续传。比如我们以FlashFXP为例加以说明。运行FlashFXP后,按下F8键打开连接窗口,服务器可以选择为本机IP地址,输入刚才设置好的用户名和密码登陆到FTP上(如下图),接下来就能在设置好的虚拟目录上进行大文件复制、转移甚至完成整盘拷贝等操作,即使出现意外终止的情况也能断点续传。
  FlashFXP快速连接设置
  小提示:在本地电脑上建立Ftp服务器是比较通用的做法,类似的软件也比较多,这种方法对于文件数量多少没影响,就算互传超大超多的文件也不担心遇到意外终止的情况。
分享给朋友:
WinRAR相关教程
WinRAR相关新闻
下载1532次
热门关键字2077人阅读
笔记(44)
断点续传的要点:
每写入一次文件就将这次写入文件的位置保存起来(保存到文件中),下次读取文件的的位置开始下载
public class MuchThreadDown {
private static int threadCount = 3;
private static int blockSize = 0;
private static int runningTrheadCount = 0;
private static String path = "http://192.168.13.83:8080/itheima74/feiq.exe";
public static void main(String[] args) {
URL url = new URL(path);
HttpURLConnection openConnection = (HttpURLConnection) url
.openConnection();
openConnection.setRequestMethod("GET");
openConnection.setConnectTimeout(10 * 1000);
int code = openConnection.getResponseCode();
if (code == 200) {
int filelength = openConnection.getContentLength();
RandomAccessFile randomAccessFile = new RandomAccessFile(
new File(getFileName(path)), "rw");
randomAccessFile.setLength(filelength);
randomAccessFile.close();
blockSize = filelength / threadC
for (int threadId = 0; threadId & threadC threadId++) {
int startIndex = threadId * blockS
int endIndex = (threadId + 1) * blockSize - 1;
if (threadId == threadCount - 1) {
endIndex = filelength - 1;
new DownloadThread(threadId, startIndex, endIndex).start();
} catch (Exception e) {
e.printStackTrace();
public static class DownloadThread extends Thread {
private int threadId;
private int startI
private int endI
private int lastP
public DownloadThread(int threadId, int startIndex, int endIndex) {
this.threadId = threadId;
this.startIndex = startI
this.endIndex = endI
public void run() {
synchronized (DownloadThread.class) {
runningTrheadCount = runningTrheadCount + 1;
URL url = new URL(path);
HttpURLConnection openConnection = (HttpURLConnection) url
.openConnection();
openConnection.setRequestMethod("GET");
openConnection.setConnectTimeout(10 * 1000);
System.out.println("理论上下载:
线程:" + threadId + ",开始位置:"
+ startIndex + ";结束位置:" + endIndex);
File file2 = new File(threadId + ".txt");
if (file2.exists()) {
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(new FileInputStream(file2)));
String lastPostion_str = bufferedReader.readLine();
lastPostion = Integer.parseInt(lastPostion_str);
openConnection.setRequestProperty("Range", "bytes:"
+ lastPostion + "-" + endIndex);
System.out.println("实际下载:
线程:" + threadId + ",开始位置:"
+ lastPostion + ";结束位置:" + endIndex);
bufferedReader.close();
lastPostion = startI
openConnection.setRequestProperty("Range", "bytes:"
+ lastPostion + "-" + endIndex);
System.out.println("实际下载:
线程:" + threadId + ",开始位置:"
+ lastPostion + ";结束位置:" + endIndex);
if (openConnection.getResponseCode() == 206) {
InputStream inputStream = openConnection.getInputStream();
RandomAccessFile randomAccessFile = new RandomAccessFile(
new File(getFileName(path)), "rw");
randomAccessFile.seek(lastPostion);
byte[] buffer = new byte[1024];
int length = -1;
int total = 0;
while ((length = inputStream.read(buffer)) != -1) {
randomAccessFile.write(buffer, 0, length);
total = total +
int currentThreadPostion = lastPostion +
File file = new File(threadId + ".txt");
RandomAccessFile accessfile = new RandomAccessFile(
file, "rwd");
accessfile.write(String.valueOf(currentThreadPostion)
.getBytes());
accessfile.close();
inputStream.close();
randomAccessFile.close();
System.out.println("线程:" + threadId + ",下载完毕");
synchronized (DownloadThread.class) {
runningTrheadCount = runningTrheadCount - 1;
if (runningTrheadCount == 0) {
System.out.println("所有线程下载完成");
for (int i = 0; i & threadC i++) {
File file = new File(i + ".txt");
System.out.println(file.getAbsolutePath());
file.delete();
} catch (Exception e) {
e.printStackTrace();
super.run();
public static String getFileName(String url) {
return url.substring(url.lastIndexOf("/"));
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:36988次
排名:千里之外
原创:35篇
转载:14篇
(2)(2)(1)(2)(3)(6)(5)(2)(3)(6)(13)(2)(1)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'}

我要回帖

更多关于 网页下载断点续传 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信