通过设置CURLOPT_RANGE可以下载服务器端文件的特定数据块,这样如果服务器数据很大的情况下,如果只是需其中一小块数据就可以采用这种方法
当然这个也可以用来多线程加速下载同一个文件
#include "stdafx.h"
#include "curl/curl.h"
#include <string>/*注意包含这个头文件后必须把share.h重命名一下,可能是stl里面也有这个头文件,比如curl_share.h,然后把包含到的地方替换一下*/
#include "curl/easy.h"
using namespace std;
struct RecordNode
{
public:
int idx;
int data[10000];
void SetData(int i)
{
idx = i;
for ( int j = 0; j < 10000; j ++ )
{
data[j] = i + j;
}
}
};
struct BufferNode
{
char ptrBuff[40004];
int cur;
int max;
};
BufferNode node;
static size_t downLoadPackage(void *ptr, size_t size, size_t nmemb, void *userdata)
{
//FILE *fp = (FILE*)userdata;
//size_t written = fwrite(ptr, size, nmemb, fp);
//return written;
BufferNode* pBuf = /*&node;*/(BufferNode*)userdata;
size_t cnt = size * nmemb;
if ( pBuf->cur + nmemb &