之前写过一个多线程断点续传的下载库,不过那个是基于一个linux的下载程序。windows下运行还好,android下就各种问题,调试起来还麻烦。后面开发游戏的时候,一方面对下载要求不高,另一方面也精力有限,所以就没有继续研究。
趁现在有时间,我希望实现一个自己满意的下载库,满足以下需求:
1、多线程下载,根据文件大小和下载的文件数目进行调度。一般情况下是一个文件一个文件按照顺序下载,如果文件比较多的情况下可以多个文件同时下载,这个是可以设置的。
2、断点续传。下载进度记录到一个配置文件中,要求无论断电还是其他情况都不会使文件损毁或者无法继续下载的错误。
3、至少要在windows、android、iOS、wp8下面稳定运行。
4、接口要简单,设计要简单。
5、可以设置限速、限制cpu占用等
6、通过简单的操作可以实现后台下载(看实际情况,这个是低优先级目标)
为什么要基于libcurl? 这个主要从跨平台的稳定性出发。就现在看来libcurl的跨平台性能是最好的,我没有自信封装出比它更加稳定的代码来。基于libcurl来完成下载,那么核心问题就转换到如何维护和调度curl上面了。
(未完待续)