• 多线程下载程序的功能需求


    最近给自己写了个类似迅雷的多线程下载程序(我用的是异步socket,严格来说并不是多线程的方式,应该算多任务),总结了下相关需求,主要如下:

    下载功能(Core)

    1. 支持指定URL下载文件
    2. 支持实现自定义Refer、Cookie等Header
    3. 支持查询下载速度、文件大小
    4. 支持文件缓存功能。
    5. 下载完成后校验已经下载的文件大小是否等于远端文件大小(防止服务器端主动中断连接)
    6. 下载到同名文件智能重命名
    7. 支持失败重试
    8. 支持下载速度较慢时主动中断并重试
    9. 支持将较大的任务划分为多个子任务,子任务下载下载后能合并
    10. 支持子任务并发管理(最大并发数)
    11. 支持子任务失败策略(FailFast及IgnorFailure)

    任务管理(Shell)

    1. 支持添加任务
    2. 支持删除任务
    3. 支持保存及恢复任务,下次启动时无需重新添加
    4. 支持停止正在下载的任务
    5. 支持显示任务状态:排队、下载中、失败、停止、完成
    6. 支持显示已完成的任务和已删除的任务
    7. 支持重新下载已完成、已停止、已删除的任务
    8. 支持改变任务位置
    9. 支持并发任务管理(最大并发数)
    10. 支持查询任务下载速度,文件大小,剩余下载时间,下载进度
    11. 有任务下载时阻止系统休眠,无任务下载时不能阻止系统休眠。
    12. 支持所有任务完成后自动关机

    我这个程序是个即兴程序,写的时候倒并没有考虑那么多的需求,最开始连个界面都没有,只是个多线程下载的控制台程序,这些需求就是我在使用过程中逐步添加进来的,后续有更新再补充。

    由于这个程序基本上是我想到哪儿写到哪儿的,可能需求列表并不完善,说明也比较粗略。但作为一个多线程下载程序还是有一定的参考意义的。

  • 相关阅读:
    《Mathematical Olympiad——组合数学》——染色问题
    《啊哈算法》——栈、队列、链表
    《Mathematical Olympiad——组合数学》——抽屉原理
    2749: [HAOI2012]外星人
    bzoj4241: 历史研究
    bzoj3210: 花神的浇花集会
    bzoj4998: 星球联盟
    bzoj2728: [HNOI2012]与非
    bzoj2669: [cqoi2012]局部极小值
    bzoj5441: [Ceoi2018]Cloud computing
  • 原文地址:https://www.cnblogs.com/TianFang/p/2877876.html
Copyright © 2020-2023  润新知