用Java设计下载软件

“网络蚂蚁”、Falshget 等许多多线程下载软件都是网友的必备工具,利用这些工具可以快速从服务器上下载比较大的文件,这些工具的工作特性是把服务器端的文件分成几个段,每个段分别、同时进行下载。编写这类程序,第一、必须对HTTP协议有较为充分的了解;第二、有效使用多线程编程手段在软件上实现。

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行方送一个空白行,表明请求行结束。

时间: 2024-10-30 17:52:40

用Java设计下载软件的相关文章

使用Java开发下载软件?

问题描述 我想使用Java开发一个下载软件,在linux下使用,用来下载http,ftp,迅雷,快车等资源,目前已经能够使用单线程下载这些资源,正在想办法实现多线程下载我的构想是用到读写XML,多线程等知识完成该程序,但是还有问题没有得到解决:1>每个线程都下载文件的一部分,那么这些线程是共有一个临时文件:还是生成多个临时文件来保存各自的那部分信息,最后再合并这些临时文件......如果真的是使用很多个临时文件,那100个线程岂不是要100个临时文件?能不能事先在磁盘上创建一个与下载文件大小相同

软件-java程序设计 下载 进度条显示

问题描述 java程序设计 下载 进度条显示 当我在一个页面点击下载下载软件时,能否将名称和进度条显示在另一个页面 我需要用java实现程序设计,如果可以的话麻烦贴出代码,在百度上看了很多, 没有找到可以使用的,谢谢了 解决方案 天生java做activex也很困难.不如用C++ 解决方案二: 如果是基于浏览器的话,不可以实现.因为服务器端程序不能直接控制浏览器读写文件,也不能获知下载进度. 除非你在客户端部署程序,比如activex控件. 解决方案三: 迅雷就是我说的,在客户端部署程序实现的.

技术-基于多线程的下载软件的设计与实现,求大神指教

问题描述 基于多线程的下载软件的设计与实现,求大神指教 基于多线程的下载软件 利用多线程技术开发一个下载软件,该软件可以在桌面应用的下载软件:支持HTTP/FTP协议的地址,支持多个任务同时下载:支持断点续传:支持多线程同步:支持P2P下载.这个要怎么做,求各位指教!!! 解决方案 http://www.codeproject.com/Articles/21053/MyDownloader-A-Multi-thread-C-Segmented-Download-M

软件开发-JAVA在下载的时候报错,各位大神路过顺便帮忙看下吧

问题描述 JAVA在下载的时候报错,各位大神路过顺便帮忙看下吧 ClientAbortException: java.io.IOException at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:369) at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:368) at org.apache.catalina.co

名片在线设计制作软件给你独一无二的“身份证”

一:软件下载 大家可以到www.http://duote.com/soft/6243.html 去下载软件. 二:软件安装 双击软件后会出现如下图所示的安装界面,只要一直点击"下一步"就能完成软件的安装啦! 三:软件使用 首先我们先来看看这款软件的运行界面,如下图所示: 第一步: 先在右边的模板中选择一款你喜欢的名片模版,以第一个模版为例,如下图所示: 第二步: 在选中模板后,大家可以看到左边的空格内会出现与之前不同的样子,而当你用鼠标点击空格时,则会告诉你这是对应的名片中的哪个位置,

《领域驱动设计:软件核心复杂性应对之道(修订版)》—第1章 1.1节有效建模的要素

第一部分 运用领域模型 领域驱动设计:软件核心复杂性应对之道(修订版) 上面这张图是18世纪中国描绘的世界地图.图中央最大的部分是中国,其周围散布着其他国家,但这些国家只是草草地表示了一下.这是适用于当时中国社会的世界模型,它意在关注中国自身.然而,这幅地图所呈现的世界观对于处理外交事务并无助益.当然,它对现代中国也毫无用处.地图就是模型,而模型被用来描绘人们所关注的现实或想法的某个方面.模型是一种简化.它是对现实的解释--把与解决问题密切相关的方面抽象出来,而忽略无关的细节. 每个软件程序是为

服务器-求教一个设计聊天软件的问题~

问题描述 求教一个设计聊天软件的问题~ 打算做一个聊天软件,本想模拟飞秋那样,知道不用用到服务器来作为中间传输工具,后来参考很多资料都是基于c/s模式的设计~搞得我现在有点混淆概念,上网查资料大家对服务器的概念好像不太一样,到底可不可以实现不用服务器只有两个客户端来通讯的系统呢?请教各路大神给点建议~~~ 解决方案 除非在一个局域网这样简单的场合使用广播,否则服务器是必不可少的.即便你使用P2P方式通讯,服务器还是需要存在的,用于账户验证.好友列表.上线.下线.获取对方IP.建立连接等等. 解决

迅雷等下载软件原理,网络直播的原理!

问题描述 大家给我介绍几本书,或者开源项目,或者,给我发送源代码:948351520@qq.com谢谢!!! 解决方案 解决方案二:迅雷最基本的机制,是每一个下载过文件的终端都可以给系统提供可用新资源的识别码(假设是md5).这样即使文件名不一样,也可以识别它们是相同资源.然后当一个人要求下载一个资源时,会请求服务器把全世界有同样识别码(假设是md5)的资源全都发来,然后从多个资源并行下载,哪一个快就从哪里多下载一些.解决方案三:流媒体的,我想还是算了,暂时微软并没有在.net中增加其支持(特别

用JAVA 设计生成二维码详细教程_java

教你一步一步用 java 设计生成二维码 在物联网的时代,二维码是个很重要的东西了,现在无论什么东西都要搞个二维码标志,唯恐落伍,就差人没有用二维码识别了.也许有一天生分证或者户口本都会用二维码识别了.今天心血来潮,看见别人都为自己的博客添加了二维码,我也想搞一个测试一下. 主要用来实现两点: 1. 生成任意文字的二维码. 2. 在二维码的中间加入图像. 一.准备工作. 准备QR二维码3.0 版本的core包和一张jpg图片. 下载QR二维码包. 首先得下载 zxing.jar 包, 我这里用的