说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

谁知道下载程序如(netants)的多线程原理?

编辑:说三道四文库 发布时间:2018-02-24 10:18
HTML文档下载 WORD文档下载 PDF文档下载
谁知道下载程序如(netants)的多线程原理?
而有的网站又是怎么控制不允许多点下载的?
敬请关注!
关注
好!我关注
HTTP/1.1协议和新的FTP协议支持多点传送功能。

HTTP请求协议内容请自行参考:RFC2616 和 RFC2068 。
这里只说明多点传送特性的基本原理。

当客户(如IE,Netants等)向服务器请求信息时,会按HTTP协议发送一个请求,其中有几个请求参数是有关多点传送的,这些参数最重要的是: "Content Range"(WEB服务器会将其转存为HTTP_RANGE变量),其格式是:
  Content-Range = "Content-Range" ":" content-range-spec

       content-range-spec      = byte-content-range-spec
       byte-content-range-spec = bytes-unit SP
                                 byte-range-resp-spec "/"
                                 ( instance-length | "*" )

       byte-range-resp-spec = (first-byte-pos "-" last-byte-pos)
                                      | "*"
       instance-length           = 1*DIGIT

举个例子,假如你需要下载一个文件如a.zip,那么,NetAnts将发送几个带Contnet-Range参数的HTTP/1.1格式的请求,Content-Range参数可能分别为:
  Contnet-Range : byte 1-1000/5000
  Contnet-Range : byte 1001-2000/5000
  Contnet-Range : byte 2001-3000/5000
  Contnet-Range : byte 3001-4000/5000
  Contnet-Range : byte 4001-5000/5000
  共五个请求(具体可以看NetAnts的记录)
  
  意思是这次取文件a.zip的第1至第1000个byte,这个文件共5000字节(如果文件长度不知,可用"*"代),
服务器接受请求后,就明白你要哪部份了,就会传送你要的那部份文件的内容。
至于服务器要不要答应你的请求,那要看服务器的意愿啦(也可以写程序来控制)。
如果服务器不支持HTTP/1.1的多点传送功能,就不明白你送的这个参数是什么东西了。


具体的,如果你想知道哪个部份的细节,我知道的一定解答。
沐:
  我保证这道题的分数你至少可以得到86分。
另100分要怎么拿呢?
沐:你有关于断点的示例吗?我想好好研究一下。dana@shd.com.cn
还有这和ftp的断点下载是同个原理吗?
沐:能给一个比如断点续传的实例中收发的报文?
      Ch81@263.net
HTTP和FTP的原理不同,HTTP只建立一条数据连接,而FTP利用两条通道分别发送命令和数据
HTTP部分如Muf(沐枫)所言,其实只要用WinINet函数就可以实现HTTP断点续传
而FTP部分相对复杂,需要发送REST重新定位远程文件指针再发送什么什么指令忘了,FTP部分协议的资料主要可以参考RFC959,上面对FTP的指令和连接方式有较为详细的叙述
当然剩下的100分给其它的有建设性的答案。
to: dana(dana) ch81() 
很对不起,我暂时不能给。你们可以下载最新的继点续传软件如netants,flashget,它们都显示来往的数据和命令。我最初就是从里获得感性认识的。
To Firing_Sky(火的天空) 
谢谢你的补充。不过FTP仍然是一个通道,只是HTTP的联接不是一直保持的,而FTP是一直保持的,直到你Logout为止。因此它的命令和数据可以同时双向进行。
关注
谁要是公布源代码我愿对此问题感兴趣的朋友送你300分
因为我有可用分2000多,参与分近4000
这个问题我已经解决了现在送分。
我想说的是Ftp是两个socket,一个是用来登陆的,成功之后服务器将会给你地址和端口来上下载文件的,这是我想补充的
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘