怎样实现多线程分块下载文件?

主  题:  怎样实现多线程分块下载文件??
作  者:  libertysigil (自由魔方.NET)  
等  级:
信 誉 值:  100
所属论坛:  .NET技术 C#
问题点数:  20
回复次数:  1
发表时间:  2003-08-08 15:39:38

关键是怎样实现分块,怎样在本地申请恰当的空间?



回复人: carper(卡皮) ( 四级(中级)) 信誉:100 2003-09-20 09:58:00 得分:0

http://expert.csdn.net/Expert/topic/1809/1809756.xml?temp=.8900263

断点续传如果你会http 协议就知道了,不会该协议的也做不出合格的下载软件,所以你必须先学http 和ftp 协议,不会这个协议你问这个东西做什么?就好象你不会吃饭问筷子怎么用做什么?

HTTP 协议有一个头是:

Range: bytes=1031232-

这就是要服务器从指定偏移地址开始发送数据,比如

c:\>nc www.csdn.com 80

get /myFile.zip
host: www.csdn.com
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows NT 5)
Connection: close

由回显的
Content-Length: 2062464
得到该文件的大小,然后就可以将文件分段下载,在第二线程用:

c:\>nc www.csdn.com 80

get /myFile.zip
host: www.csdn.com
Accept: */*
User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows NT 5)
Range: bytes=1031232-
Connection: close

其中的range 就是要开始续传的位置
多线程下载就是用了续传的原理,它告诉服务器我上次下一半断线了,现在我要续传某某段,其实是同一个文件,但服务器并不知道而已

Contributors: FHL