J'utilise le code suivant pour télécharger des fichiers depuis Internet:C libcurl - mesure la vitesse de téléchargement et le temps restant
size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream)
{
size_t written;
written = fwrite(ptr, size, nmemb, stream);
return written;
}
int main(int argc, char** argv)
{
FILE *downloaded_file;
if ((downloaded_file = fopen (download_path , "w")) != NULL)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt(curl, CURLOPT_URL, "www.asd.com/files/file_to_download.rar");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, downloaded_file);
res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (res == CURLE_OK)
{
printf("Download complete!\n");
}
}
fclose(downloaded_file);
}
}
Comment puis-je mesurer la vitesse de téléchargement en cours (par exemple toutes les secondes) et le temps restant à compléter le téléchargement?
Ceci est pour la barre de progression, comment puis-je utiliser pour mesurer la vitesse? –
La vitesse de téléchargement moyenne générale est dlnow/(heure actuelle - heure de début). La vitesse de téléchargement "actuelle" est un peu plus délicate. D'abord, vous devez définir ce que cela signifie. Une possibilité est d'avoir un old_time, et old_now. Alors c'est (dlnow - oldNow)/(heure actuelle - oldTime). –
après 6 ans toujours un commentaire très utile: P Merci que speed = ((NowDownloaded - lastDownloadedBytes)/(QTime(). CurrentTime(). Second() - oldTime.second())/1024); totalement travaillé pour moi xD –