0
我有一個情況,我正在使用libcurl與C++下載一個240 MB的文件,但它需要15分鐘這樣做。我確信我的寫回調儘可能快。它只是寫入一個足夠大的數據的內存緩衝區。當我使用curl命令從同一臺服務器下載同一個文件時,只需不到一分鐘。當我使用瀏覽器下載文件時,它也需要不到一分鐘的時間。是否有可能錯誤地使用libcurl?這是我的代碼片段...libcurl下載速度太慢
wxString postFields;
postFields += "package_name=" + packageName;
if(desiredVersion != 0)
postFields += wxString::Format("&package_version=v%d", desiredVersion);
curl_easy_reset(curlHandleEasy);
curl_slist_free_all(headers);
headers = nullptr;
headers = curl_slist_append(headers, "Content-Type: application/x-www-form-urlencoded");
headers = curl_slist_append(headers, "Accept: application/x-zip-compressed");
url = "http://" + packageServer + ":7000/package_download";
urlData = url.c_str();
binResponse = new BinaryResponse(packageSize);
curl_easy_setopt(curlHandleEasy, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curlHandleEasy, CURLOPT_POSTFIELDS, postFieldsData);
curl_easy_setopt(curlHandleEasy, CURLOPT_URL, urlData);
curl_easy_setopt(curlHandleEasy, CURLOPT_WRITEFUNCTION, &Response::WriteCallback);
curl_easy_setopt(curlHandleEasy, CURLOPT_WRITEDATA, binResponse);
curlCode = curl_easy_perform(curlHandleEasy);
我的請求設置有問題嗎?如果我將寫回調更改爲只聲稱寫入數據的虛擬例程,但只是將其拋出(儘可能快),我的下載速度仍然非常慢。
瓶頸是否可能是網絡上的某種安全掃描,我受到瀏覽器和curl命令的影響?
你的WRITEFUNCTION的代碼是什麼?如果您將這兩行註釋掉並讓curl進行測試只是爲了測試,它會更快嗎? – drew010