原帖在http://topic.csdn.net/u/20090410/21/5d01c639-d4fe-4227-9e0f-cfce7514b99e.html
回复让我心酸。求可以多任务下载,同时可以配置一个任务有N个连接,N个线程下载的源代码。哎
需求难道一定和描述的字数成正比吗?N个连接,N个线程,可配置
多任务下载VCKBASE搜了,百度,google量太大,当然我也搜索过。
我想应该有经典点的代码。麻烦高手推荐下。最好是小一点的。谢谢

解决方案 »

  1.   

    http下载,可以多线程下载支持断点续传,多线程下载这里指同时下多个目标,而非一个任务分割成多个线程,不过这种需求是否可以类似断点续传进行?
    非FTP,使用CHTTPFile类,细节就不说了
    我的使用HTTP,断点续传(本次未下载完的下次下载),目前我这有两种办法:1.通过请求头中的Range:0-100  2.比较文件 先取得本地文件,如果文件存在且大小悬殊,则CFile aFile; 
    aFile.Open(sFileName,CFile::modeWrite | CFile::typeBinary);打开文件,否则aFile.Open(sFileName,CFile::modeCreate | CFile::modeWrite | CFile::typeBinary); 
    通过DWORD dLen = aFile.GetLength();取得文件大小,aFile.Seek(dLen, CFile::begin);移动指针,断点续传就从此处开始。 
    这是本地文件已经准备好了,现在在准备待下载文件,也定位到dLen的地方,但是使用CHttpFile* pHttpFile = NULL;... 
    pHttpFile->Seek(....)方法总是不行,一个未知的错误,原因还未知,不过不用这方法同样可以: 
    nLen = pHttpFile->Read(szBuffer, 1024);  //读数据 
    while(nLen >= 1024) 

      dwDownloadSize += nLen;    //已下载大小 
        if (dLen <= dwDownloadSize -1) //!!!  -1 
        { 
          aFile.Write(szBuffer, nLen); 
        } 

    ..... 
    同样可以放在多线程中
      

  2.   

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