【问题标题】:C++ download file - if not available increasing RAM usage 1mb/sC++ 下载文件 - 如果不可用,则增加 RAM 使用量 1mb/s
【发布时间】:2016-07-04 09:32:18
【问题描述】:

如果我的代码无法到达要下载的文件,我的代码会一直填充 RAM。(网络禁用测试) 超时后如何停止下载?

这里是下载的主要部分:

int WINAPI WinMain(HINSTANCE instanceHandle, HINSTANCE, char*, int)
{
    using namespace std;
    std::wstring loadme = targetfolder;
    loadme += L"\\filename.txt";
    std::wstring url1(L"fileurl");
    HRESULT hr1 = URLDownloadToFile(NULL, (url1.c_str()), (loadme.c_str()), 0, NULL); //Download-Start
}

【问题讨论】:

标签: c++ download timeout


【解决方案1】:

您可以使用 WinINet 功能检查互联网是否可用,检查 url 链接是否可用,并报告进度。需要“wininet.lib”

WinINet Reference

#include <windows.h>
#include <wininet.h>
#include <fstream>

void geturl(const wchar_t *url)
{
    std::ofstream file("c:\\test\\test.htm");
    HINTERNET hopen = InternetOpen(L"myAppName",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0);
    if (hopen)
    {
        HINTERNET hurl = InternetOpenUrl(hopen,url,NULL,0,INTERNET_FLAG_DONT_CACHE,0);
        if (hurl)
        {
            DWORD received;
            const int bufsize = 1024;
            char buf[bufsize];
            while (InternetReadFile(hurl, buf, bufsize, &received))
            {
                //progress...
                if (!received) break;
                file.write(buf, received);
            }
            InternetCloseHandle(hurl);
        }
        InternetCloseHandle(hopen);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-27
    • 2023-01-03
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 2011-09-15
    相关资源
    最近更新 更多