下载了一个类似于“迅雷”多线程下载的例子。这个例子整到我头大,十分繁杂。照说“下载”的功能很简单,点一个download按钮开始下载,获取URL,文件名,大小作为参数;以多线程FTP的方式来下载。该工程经过我整理后的情况:1、downloadpub基类:派生出downloadFTP和downloadHTTP两个类。想这两个类是做不同下载方式之用。
2、CDownloadMTR类:里声明了要包含“downloadFTP.h”和“downloadHTTP”,
3、DownloadMTR类,是做一些应用程序具体的工作供Dialog里的“download按钮”等调用。
4、SocketClient类
5、无数的全局函数。 以上还是我进行了大量的瘦身后的工程 希望弄过这个的大虾说说原理,以及帮我理清下思路。好让我做一个出来

解决方案 »

  1.   

    只需要多线程FTP下载的,其他不需要```
      

  2.   

    首先服务期要支持断点续传,
    多线程下载就是每个线程下载指定的大小
    比如线程1下载1-1000,线程2下载1001-2000,线程三下载2001直到结束
    每个线程连接服务器,告诉服务器下载的文件,及文件的开始结束位置如果中间停止,就把已经下载的信息写到文件,下次去读文件,接着上次的下载
    下载信息文件可以写一个单独的文件,也可以写到正在下载的这个文件里面
    下载信息一般包含几个方面,线程数,线程下次开始结束点
    举例来说,线程数3,线程1 200-1000,线程2 1500-2000,线程3 3000到结束,你看的这个就是写到下载的文件末尾的,等完成后直接用CFile的SetLength设为实际大小
      

  3.   

    好像 FTP本身就支持断点续传的
      

  4.   

    这里有个跨平台的下载库,支持HTTP,FTP,HTTPS,多线程下载,还能在WinCE,Linux,IPhone上跑,你可以参考下
    http://www.easygeteasy.com