主要利用http 协议中 head 中Range 属性,每一个线程分步下载文件的一部分 .发送head属性设置 Range ,bytes=start/end 在正确的情况下返回206,不再是200 其中计算range的开始和结束时注意不能算错。 大致计算方式如下:
part:=filesize/muti+1 为每一部分的协程大致下载量 第一个协程下载start,end 为0,part;其他的不是第一个最后一个协程的 start:=i*part 其中i 为协程号,从0开始传递给每一个下载的协程 end:=(i+1)*part ,对于最后一个协程,由于除法导致精度丢失,所以最后一个end用减法计算,如果i+1=muti 则end=size