开新帖。求多连接多线程下载代码。

时间:2021-08-06 00:36:55
原帖在http://topic.csdn.net/u/20090410/21/5d01c639-d4fe-4227-9e0f-cfce7514b99e.html
回复让我心酸。

求可以多任务下载,同时可以配置一个任务有N个连接,N个线程下载的源代码。

哎。。。
需求难道一定和描述的字数成正比吗?

N个连接,N个线程,可配置。。。
多任务下载。。。

VCKBASE搜了,百度,google量太大,当然我也搜索过。
我想应该有经典点的代码。麻烦高手推荐下。最好是小一点的。谢谢

7 个解决方案

#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


顶一下

#3


......................

#4


what

#5


收一下

#6


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

#7


该回复于2011-01-04 10:07:29被版主删除

#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


顶一下

#3


......................

#4


what

#5


收一下

#6


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

#7


该回复于2011-01-04 10:07:29被版主删除