240 MBのファイルをダウンロードするためにlibcurlをC++で使用している場合がありますが、そのためには15分かかります。私は私の書き込みコールバックができるだけ速いことを確認しました。これは、データ用に十分な大きさのメモリ内バッファに書き込んでいるだけです。 curlコマンドを使用して同じファイルを同じサーバーからダウンロードすると、1分もかかりません。ブラウザを使ってファイルをダウンロードすると、1分もかかりません。 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);
私のリクエスト設定に何か問題はありますか?書き込みコールバックを変更して、単にデータを書き込んだと主張するダミールーチンにするが、できるだけ早くそれをスローすると、ダウンロード速度はまだ非常に遅いです。
ボトルネックは、ネットワーク上で何らかのセキュリティスキャンを行っている可能性はありますか?ブラウザとカールコマンドがないということがありますか?
WRITEFUNCTIONのコードは何ですか?あなたがそれらの2行をコメントアウトして、curlにテスト用の書き込みだけをさせるのが速いのですか? – drew010