[下载器设计.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[下载器设计

用Java设计下载软件  本文介绍了如何使用Java编写下载软件并实现多现程下载 “网络蚂蚁”、Falshget等许多多线程下载软件都是网友的必备工具,利用这些工具可以快速从服务器上下载比较大的文件,这些工具的工作特性是把服务器端的文件分成几个段,每个段分别、同时进行下载。编写这类程序,第一、必须对HTTP协议有较为充分的了解;第二、有效使用多线程编程手段在软件上实现。 HTTP协议的简介 HTTP协议是一种超文本传输协议(HypertextTransferProtocol),工作于网络应用层,自1990年起广泛应用于WWW的全球信息服务,HTTP协议的详细说明可以在网上查阅RFC2518、RFC2616等文档。 HTTP协议老的标准是HTTP/1.0,目前最通用的标准是HTTP/1.1。HTTP/1.1是在HTTP/1.0基础上的升级,增加了一些功能,全面兼容HTTP/1.0。HTTP/1.0不支持文件断点续传,如果服务器使用HTTP/1.0,“网络蚂蚁”的任何多线程下载程序都只能按单线程下载;好在目前的Web服务器绝大多数都采用了HTTP/1.1,所以,下面将基于HTTP/1.1进行介绍。 HTTP协议的相关重要命令 基于HTTP的浏览器浏览网页、下载文件时,工作原理类似客户机/服务器模式:浏览器向Web服务器发出一个HTTP请求行;Web服务器在收到有效的请求后,返回一个状态行或多个响应标题、一个空白行和相关文档。根据这一工作原理,下载程序必须实现向服务器发送请求和获取服务器响应状态的功能。 1.向服务器发送GET请求命令 一个HTTP请求由一个请求行、可选数目的请求标题、一个空白行,以及在POST情况下的一些额外的数据组成。请求行的格式是: 请求方法URIHTTP/版本号 GET命令是浏览器常用的文档请求方法,在程序中间使用 GETURIHTTP/1.1 向Web服务器发送请求行(行号3),Java代码如下: .... clientSocket = new Socket( host, port );//打开要下载文件服务器的Socket outStream = new PrintStream( clientSocket.getOutputStream() ); .... outStream.println(“GET”+uri+“HTTP/1.1”); outStream.println(“Host:”+host); outStream.println(“Accept:*/*”); outStream.println(“Referer:”); outStream.println(); .... 注:第4行给出URL中的主机名和端口号,第5行说明客户端接收所有MIME类型,第7行方送一个空白行,表明请求行结束。 2.获取服务器响应状态 在发送HTTP请求行以后,程序就可以读取服务器的响应状态了。HTTP响应状态行包括:HTTP状态码和一些HTTP响应标题。 1)HTTP状态码 HTTP状态码格式是HTTP/版本信息的数字表示。状态码例子如下: HTTP/1.0200OK//表示服务器支持HTTP/1.0协议,成功 HTTP/1.1200OK//表示服务器支持HTTP/1.1协议,成功 HTTP/1.0404NotFound//表示服务器支持HTTP/1.0协议,访问文件没有找到 在程序中间,如果读到“HTTP/1.1200OK”这样的字符串,表明欲下载文件存在、该服务器支持断点续传,可以使用多线程下载。如果读到“HTTP/1.0200OK”这样的字符串,表明欲下载文件存在、但该服务器不支持断点续传,只可以使用单线程下载。 ..... while((line=inStream.readLine())!=null)//将服务器响应状态读到line ........ if(line.substring(0,7).equals(“HTTP/1.”))//判断是否支持HTTP/1.1 {if(line.charAt(7)==‘0’) { System.out.println(“serverusehttp/1.0”); threadcount=1; } if(!(line.substring(9,12)).equals(“200”))//判断请求是否成功 {System.out.println(“ERROR:”+line); returnfalse; } } 2)读取重要的响应标题,获得要下载文档的文件长度 如果HTTP状态码表明访问成功,服务器会回送一些标题行,我们最关注的是Content-Length这一行,比如,如果服务器回送“Content-Length:1000”,表明请求文件的长度是1000字节,所以读取这一行信息,可以得

文档评论(0)

yingrong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档