计算机专业毕业论文)基于java的http断点续传的设计与实现内容摘要:
MVC模式图 (1) 由于本系统不是 WEB 编程所以页面部分就没有用到 JSP,用 swing 图形界面所代替, 那么怎样来实现 MVC 编程呢。 系统 MVC模型图 (2) 下面 以 系统 中的 Dilog 包来 举个列子来说明这个问题: 这是一个 Control 类 : package。 import。 public class StartDialog { private final DialogActionImpl dilogAction = new DialogAction()。 private final DialogGUIImpl dilogGUI = new DialogGUI()。 public StartDialog(JTable table) { (dilogAction)。 (table)。 } public void showDialog() { ()。 } public void setTable(JTable table) { SWING 包 中 的 类 , 例 如JButton,Jtable之类 实现包含 SWING 包的类 并实现了一个连接到 Controler 类的接口 连接到 Controler 类的接口,包含了获取 SWING包的类 功能性代码 实现功能代码并实现了一个连接到 Controler类的接口 连接到 Controler 类的接口,并能提供功能代码 这个是一个 Controler 类他的作用是负责把图形界面和功能性代码结合到一起,使之形成一个完成的模块,实现了可插拨似接口 以接口为基础连接Controler 以接口为基础连接Controler (table)。 } } 其中的 dilogAction 和 dilogGUI 都是一个接口 根据 JAVA 的多态性,使得可以用子类来赋值这两个变量 ,那么上面的 MVC 模式变可实现。 下面再看 DialogGUIImpl这一个类中的 addActionLiionner(dilogAction)方法。 public void addLiionner(final DialogActionImpl dilogAction) { (new ActionListener() { public void actionPerformed(ActionEvent e) { (impl)。 } })。 (new ActionListener() { public void actionPerformed(ActionEvent e) { (impl)。 } })。 (new ActionListener() { public void actionPerformed(ActionEvent e) { (impl)。 } })。 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { (impl)。 } })。 } 在这当中都是接口实现的功能 ,而且功能性代码已经被抽出到 Action 类当中去了,所以这样在图形编程的时候就不会再花太多时间去编写功能代码,而且能够分工合作,让图形界面和功能代码同步进行。 而且可以使代码变得更加的清晰。 同样可以把 GUI 的工作和功能性代码的工作区分开,达到可插拔的方式方便以后修改功能性代码或者是 GUI的修改 ; 程序 设计原理分析 其实断点续传的原理很简单,就是在 Http 的请求上和一般的下载有所不同而已。 打个比方,浏览器请求服务器上的一个文时,所发出的请求如下: 假设服务器域名为 ,文件名为。 GET / HTTP/ Accept: image/gif, image/xxbitmap, image/jpeg, image/pjpeg, application/ excel, application/msword, application/, */* AcceptLanguage: zh AcceptEncoding: gzip, deflate UserAgent: Mozilla/ (patible。 MSIE。 Windows NT ) Connection: KeepAlive 服务器收到请求后,按要求寻找请求的文件,提取文件的信息,然后返回给浏览器,返回信息如下: 200 ContentLength=106786028 AcceptRanges=bytes Date=Mon, 30 Apr 2020 11:46:21 GMT ETag=W/02ca57e173c11:95b ContentType=application/octetstream Server=MicrosoftIIS/ LastModified=Mon, 30 Apr 2020 11:46:21 GMT 所谓断点续传,也就是要从文件已经下载的地方开始继续下载。 所以在客户端浏览器传给 Web 服务器的时候要多加一条信息 从哪里开始。 下面是用自己编的一个 浏览器 来传递请求信息给 Web 服务器,要求从 1043070 字节开始。 GET / HTTP/ RANGE: bytes=1043070 Accept: text/html, image/gif, image/jpeg, *。 q=.2, */*。 q=.2 仔细看一下就会发现多了一行 RANGE: bytes=2020200 这一行的意思就是告诉服务器 这个文件从 2020200 字节开始传,前面的字节不用传了。 服务器收到这个请求以后,返回的信息如下: 206 ContentLength=106786028 ContentRange=bytes 1043070106786027/106786028 Date=Mon, 30 Apr 2020 11:45:21 GMT ETag=W/02ca57e173c11:95b ContentType=application/octetstream Server=MicrosoftIIS/ LastModified=Mon, 30 Apr 2020 11:45:21 GMT 和前面服务器返回的信息比较一下,就会发现增加了一行: ContentRange=bytes 1043070106786027/106786028 , 返回的 代码也改为 206了,而不再是 200 了。 软件模块设计 功能设计 该软件系统实现了以下的功能: 实现多线程下载,同一个任务可以开启多个线程进行下载。 即在开启任务的时候分配多个线程连接服务器,同时进行分块下载,以实现最大化网络资源的利用度 实现下载中暂停功能,在下载过程中能够暂停任务,并且在下次启动的时候实现暂停位置继续下载的功能,从而使得不再担忧断电或者是突然断网。 实现删除任务功能,删除正在进行的任务或者是已经完成的任务,当不再需要一个下载任务的时候可以通过该功能实现删除 实现下载文 件管理功能,对下载下来的任务进行分类管理,关联到绝对路径 ,使用户可以清晰地看到任务 保存位置。 功能 模块 设计 根据面向对象的思想 和上面的设计模式 把模块分为:图形化界面类,功能模块类,核心类。 包含的类如下图 : 源码结构图 为核心类 包 ,实现 HTTP 断点续传 ,是本系统的核心部分所在,外界向他传输一个变量,那么就可以实现多任务多线程下载 ; 为软件记录数据包,包括下载 数据和软件设置数据 ,数据包主要保存任务的属性,比如开始时间,结束时间,文件长度,名字以及大小 ; 为用户体验对话框 的包, 包括 UI 和功能模块 ,主要包括启动任务,对任务名字进行输入 ,保存地址进行输入 ; 为用户体验主界面的包 ,包括 UI和功能模块 ,主要包括了一个 Tree 树 , 一个显示详细信息的 JTabPanle,一个任务进度显示的 JTable; 为用户体验主界面的菜单 栏包,包括 UI和功能模块, 有新建任务选项 ,点击可开启新建任务 ; 为用户体验主界面的表格包,包括 UI 和功能模块,重新渲染表格的一 列 使其显示 成 JProgress。 的皮肤包,重绘 JButton,Jpanel使图形化更美观。 为界面显示的下载任务和已下载任务列表,通过添加 监听实现表格互相切换。 5. 系统 设计与 实现 多线程任务下载 设计 任务 启动 线程 设计 在 这个包中有的 SiteFileFetch 类是启动任务线程的类,它实现的功能是获取文件长度,判断是否能进行 HTTP 断点续传 ,以及读写文件。 public SiteFileFetch(String url, String fileName, String srcPath, int chunk) { = new DownloadData(url, fileName, srcPath)。 String tmpName[] = (\\p{Punct})。 tmpFile = new File(() + + tmpName[0])。 if (!()) { startPoints = new long[chunk]。 endPoints = new long[chunk]。 try { createFile(false)。 } catch (IOException e) { (创建临时文件出错 )。 } } else { bFirst = false。 readFilePoint()。 } 上面这段代码是为正在进行的任务创建临时信息, 临时信息为总线程数,以及每个线程下载开始和结束的位置,同时通过查找临时文件判断此任务是否为第一次下载。 private void readFilePoint() { try { // 输入 流, 从临时文件中读取指针位置 DataInputStream input = new DataInputStream(new FileInputStream( tmpFile))。 // 读取第一个 int类型数据 ,保存的內容 为 : 起始位置 int nCount = ()。 startPoints = new long[nCount]。 endPoints = new long[nCount]。 for (int i = 0。 i。 i++) { startPoints[i] = ()。 endPoints[i] = ()。 } ()。 } catch (IOException e) { ()。 } catch (Exception e) { ()。 } } 这段代码是读取临时文件夹的信息,以初始化线程,以便分配任务 ,在读取的第一个int 类型数据,表示线程的个数,其后每两个数据为一组,前面的一个数据表示该子线程开始的位置 ,后面的一个数据表示该线程结束的位置。 private void writeFilePoint() { try { DataOutputStream out = new DataOutputStream(new FileOutputStream( tmpFile))。 ()。 for (int i = 0。 i。 i++) { // (nPos[i])。 (fileSplitters[i].getStartPoints())。 (fileSplitters[i].getEndPoint())。 } ()。 } catch (IOException e) { ()。 } catch (Exception e) { ()。 } } 这是向临时文件中写数据 的函数, 根据上面的读取函数可以知道,第一个 writeInt(),是向文件中写入线程数,也就是 startPoints的数组长度, 后面的 for 循环是把每个位置的数据中的指向位置写到文件中去。 同时这个类 实现了 Runable 接口,那么这样就可以做为线程任务,开启多个任务。 其Run()函数的内容为: public void run() { boolean erro = false。 boolean isHTTP = true。 if (bFirst) { /。计算机专业毕业论文)基于java的http断点续传的设计与实现
相关推荐
计、文档制作等。 公司电脑的工作时间内严禁工作人员在计算机上进行与工作 无关的操作,不准上网聊天、玩游戏或看影视、听音乐 ; ? 电脑或网络出现故障时,各电脑使用人员作简易处理仍不能排除的不得私自打开机箱进行拆卸,统一由计算机管理员进行检修。 如发现硬件故障,需更换硬件时须要经过计算机管理人员检查后再进行更换 : ? 各计算机用户不得私自更改本机 IP, 如因私自更改 IP导致网络冲突
采用的 ADSL 调制技术有 3 种: QAM(quadatureamplitudemodulation)、CAP(carrierlessamplitudephasemodulation)、 DMT(discretemultitone),其中DMT调制技术被ANSI标准化小组 制订的国家标准所采用。 但由于此项标准推出时间不长 ,目前仍有相当数量的 ADSL 产品采用 QAM 或 CAP
水洗 酸洗 干燥 炭化 表面处理 浸渍催化剂 干燥 干燥 上浆 预氧化 收丝 由粘胶纤维热解制得的碳纤维的得率通常在 10~ 30%, 维制得的碳纤维,横截面形状大多不规则,一般呈树 叶状。 粘胶基碳 纤维主要用于耐烧蚀材料和隔热材料。 着其他碳纤维不可取代的地位,仍是重要的战略物资。 成都 XX新能源有限公司 编制 9 投资 XX科技产业园碳纤维材料可行性研究报告
染,防电焊火花烧伤,损坏面层。 质量标准 保证项目: 塑料门窗及其附件和玻璃的质量,必 须符合设计要求和有关标准的规定。 塑料门窗必须安装牢固,预埋铁件的数量、位置、埋设和连接方法,应符合设计要求和有关标准的规定。 塑料门窗安装位置及开启方向必须符合设计要求。 基本项目: 塑料门窗扇关闭紧密,开关灵活,无阻滞回弹,无变形和倒翘。 塑料门窗附件安装齐全,安装牢固,位置正确、端正,启闭灵活,适用美观
酸余热回收系统技术协议书 第 3 页 共 5 页 汽包人孔密封圈 二只 刚玉保护套管 50 只 高温过热器 本体 包括由两 级全合金钢过热器管束和联箱,一个全合金钢外壳组成的本体,管束和联箱 32外壳 304 安全附件 安全阀 一只 压力表 一只 其它附件 喷水减温器 二 台 集汽集箱 一只 低温过热器 一台 本体 包括由一组用 20G 制成的过热器管束和联箱,一个碳钢外壳组成的本体,外壳用
工程质量等级:优良; 设计单位及施工单位名称 : ( 1)、设计单位:南京市政设计院; ( 2)、勘察单位:南京地质勘察工程公司; ( 3)、施工单位:桩基:南京市利怛基础公司; 上部:南通市神勇建筑公司。 三、 试件留置: 同条件养护:在砼分项工程中具有重要意义。 由于同条件养护试件具有结构砼相同的材料配合比和养护条件,能够具体及其较为准确地代表砼结构的实标质量。 试件留置时应由砼厂家