用Java设计下载软件

HTTP 协议的简介

HTTP协议是一种超文本传输协议(Hypertext Transfer Protocol),工作于网络应用层,自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情况下的一些额外的数据组成。请求行的格式是:

请求方法 URI  HTTP/版本号

GET 命令是浏览器常用的文档请求方法,在程序中间使用

GET URI  HTTP/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.0 200 OK // 表示服务器支持HTTP/1.0 协议,成功

HTTP/1.1 200 OK // 表示服务器支持HTTP/1.1 协议,成功

HTTP/1.0 404 Not Found // 表示服务器支持HTTP/1.0 协议,访问文件没有找到

在程序中间,假如读到“HTTP/1.1 200 OK”这样的字符串,表明欲下载文件存在、该服务器支持断点续传,可以使用多线程下载。假如读到“HTTP/1.0 200 OK”这样的字符串,表明欲下载文件存在、但该服务器不支持断点续传,只可以使用单线程下载。

.....

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(“server use http/1.0”);

threadcount=1;

}

if(!(line.substring(9,12)).equals(“200”)) //判定请求是否成功

{ System.out.println(“ERROR:”+line);

return false;

}

}

2) 读取重要的响应标题,获得要下载文档的文件长度

假如HTTP状态码表明访问成功,服务器会回送一些标题行,我们最关注的是Content-Length 这一行,比如,假如服务器回送“Content-Length:1000”,表明请求文件的长度是1000字节,所以读取这一行信息,可以得到文件的长度信息:

java设计是什么软件下载_用Java设计下载软件相关推荐

  1. java制作表白软件手机版下载_手机自己制作表白软件

    手机自己制作表白软件app是一款可让小伙伴们大胆无畏地进行表白的手机应用,用这款手机自己制作表白软件app软件小伙伴们再也不怕不知道该如何向心仪的人表白了,通关本应用可以生成很多表白的语言或图片,让表 ...

  2. java 柱状图下载_(JFreeChart)Java图表制作

    (JFreeChart)Java图表制作软件时一个灵活的设计,很容易扩展,和目标服务器端和客户端应用程序;,支持多种图表类型. 输出类型也是多样化.包括Swing组件.图像文件(包括PNG和JPEG) ...

  3. python文本编辑器下载_海龟编辑器官方下载|海龟编辑器(Python编辑器)下载 v1.3.4 官方版 - 绿点软件站...

    编程软件,积木和代码一键转化,学起来简单有趣,可以让孩子们搭一搭积木就轻松写出Python代码,既可以提高孩子对编程的学习兴趣,又可以降低小朋友们学习Python编程的门槛,海龟编辑器扩展功能强大,支 ...

  4. java拼图游戏系统总体方案_基于JAVA的拼图游戏的设计与实现(含录像)

    基于的拼图游戏的设计与实现(含录像)(任务书,开题报告,中期检查表,外文翻译,毕业论文15500字,程序代码,答辩PPT,答辩视频录像) 摘  要 在我们日常生活中,有很多的益智类游戏,如七巧板,21 ...

  5. java质数和合数的程序_《java项目实训》课程设计计算器.doc

    <java项目实训>课程设计计算器.doc 课程设计报告课程名称JAVA项目实训课程设计设计名称基于JAVA计算器的设计与实现学生学号学生姓名学生学号学生姓名学生学号学生姓名学生学号学生姓 ...

  6. java做一个客房管理系统定制_基于JAVA酒店客房管理系统的设计与实现(JSP,MySQL)(含录像)...

    基于JAVA酒店客房管理系统的设计与实现(JSP,MySQL)(含录像)(毕业论文12000字,程序代码,MySQL数据库) 本酒店管理系统在功能模块主要分为两大方面,即用户功能模块和管理员功能模块. ...

  7. 手机学python语言用什么软件好_手机上学python的软件_零基础自学python的APP_手机学python的app_东坡下载...

    Python控制台app(Python console)下载推荐: 更新:2019-04-1016.2M / Android 推荐理由:针对python初学者打造的一款软件,Python控制台app( ...

  8. 模拟文件管理器的java可以编译但无法运行_在java学习经典问题he解答(6)

    1.Applet和普通的Java应用程序有什么区别? (1)运行方式不同.Java Applet程序不能单独运行,它必须依附于一个用HTML语言编写的网页并嵌入其中,通过与Java兼容的浏览器来控制执 ...

  9. java web开源项目源码_适合Java新手的开源项目集合——在 GitHub 学编程

    作者:HelloGitHub-老荀 当今互联网份额最大的编程语言是哪一个?是 Java!这两年一直有听说 Java 要不行了.在走下坡路了.没错,Java 的确在走下坡路,未来的事情的确不好说,但是瘦 ...

  10. java制作一个简单的画板_【Java】Thymeleaf一个简单示例

    Thymeleaf简单介绍 Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎 Spring官方支持的服务的渲染模板中,并不包含jsp.而是Thymeleaf和Freemar ...

最新文章

  1. 2022-2028年中国TPE手套行业市场全景调查及发展策略分析报告
  2. python遗传算法工具包_Deap: python中的遗传算法工具箱
  3. SerialPort.DataReceived 事件
  4. 不合法的媒体文件 id_注意!伦敦男孩、DKNY、Coach、地素... 这些品牌的服装,抽检不合格...
  5. 多个网页用一个html,在多个页面使用同一个HTML片段的代码-javascript技巧
  6. [ SAP ASAP ] SAP ASAP 方法论 对SAP项目文档的考核标准、 Documentation Principle
  7. c++——优先队列(priority_queue)
  8. 数据自治开放的加密技术挑战
  9. 小钳子图片_家居维修小帮手:史丹利45件套工具套装组合评测
  10. 你凭什么被叫做程序员?
  11. Java保存class文件,[转载]Class文件在JVM中如何存储
  12. python绘制隐含波动率曲面_如何用python计算隐含波动率
  13. JAVA计算机毕业设计高校教材征订管理系统Mybatis+源码+数据库+lw文档+系统+调试部署
  14. ele表格合并行之后的selection选中
  15. 关于我的专业(niit软件工程方向)
  16. mac+unity3d准备工作——磨刀
  17. 国产自主内存产能发展迅猛
  18. mysql语句格式化日期时间成特定格式
  19. GLView基本分析
  20. PCB层里面这些知识你都懂吗?

热门文章

  1. swift中文文档_Flutter 中文文档:使用 Packages
  2. 如何用计算机计算胸围,文胸尺码计算器
  3. matlab多元函数_函数的计算机处理8(1)_1MATLAB
  4. HBase Java API 代码开发
  5. 查看oracle空间使用率,Oracle 查看表空间使用率
  6. Docker必备知识整理
  7. 微型计算机硬件性能取决于什么,微型计算机硬件系统的性能主要取决于
  8. pta7-3 统计不及格人数_应用统计专硕院校专业难度分析【青岛大学、苏大、西安交通大学】...
  9. (dfs)迷宫最小步数
  10. (STL,map,queue)团体队列