21xrx.com
2024-06-03 06:36:41 Monday
登录
文章检索 我的文章 写文章
C++下载文件函数
2023-07-03 20:31:24 深夜i     --     --
C++ 下载 文件 函数 网络编程

C++提供了许多函数来进行网络通信,其中一个重要的功能是下载文件。在本文中,我们将探讨如何使用C++下载文件。

首先,我们需要了解C++中的一个库:WinINet。这个库提供了许多网络通信函数,包括下载文件。我们需要包含这个库的头文件,并链接该库。

#include

#include

#pragma comment(lib,"wininet.lib")

接下来,我们需要编写下载文件的函数。一个简单的例子可以是:

bool DownloadFile(LPCTSTR url, LPCTSTR filename)

{

  bool bResult = false;

  HINTERNET hInternet = InternetOpen(_T("Download File"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);

  if (hInternet != NULL)

  {

    HINTERNET hURL = InternetOpenUrl(hInternet, url, NULL, 0, INTERNET_FLAG_RELOAD, 0);

    if (hURL != NULL)

    {

      HANDLE hFile = CreateFile(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

      if (hFile != INVALID_HANDLE_VALUE)

      {

        DWORD dwBytesRead;

        BYTE pBuffer[1024];

        while (InternetReadFile(hURL, pBuffer, sizeof(pBuffer), &dwBytesRead) && dwBytesRead != 0)

        {

          DWORD dwBytesWritten;

          if (!WriteFile(hFile, pBuffer, dwBytesRead, &dwBytesWritten, NULL))

            break;

        }

        CloseHandle(hFile);

        bResult = true;

      }

      InternetCloseHandle(hURL);

    }

    InternetCloseHandle(hInternet);

  }

  return bResult;

}

这个函数有两个参数:url和filename。url是要下载的文件的链接,filename是下载后保存的文件名。该函数返回一个布尔值,表示下载是否成功。

我们使用InternetOpen函数打开一个句柄,使用InternetOpenUrl函数打开文件的链接。接下来,我们创建一个文件,使用InternetReadFile函数读取下载内容,并使用WriteFile函数将其写入文件中。最后,我们使用InternetCloseHandle函数关闭所有句柄,并返回下载是否成功。

使用这个函数很简单:

if (DownloadFile(_T("http://example.com/file.zip"), _T("file.zip")))

  // 下载成功

else

  // 下载失败

这是一个简单的下载文件函数的例子。使用C++和WinINet库,我们可以轻松地下载文件并保存到本地。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复