如何使用 wxWidgets 下载 C++ 文件?
一直在谷歌搜索,一切都没有出现!帮助表示赞赏!
为此使用wxHTTP类。
wxHTTP 示例代码:
#include <wx/sstream.h>
#include <wx/protocol/http.h>
wxHTTP get;
get.SetHeader(_T("Content-type"), _T("text/html; charset=utf-8"));
get.SetTimeout(10); // 10 seconds of timeout instead of 10 minutes ...
while (!get.Connect(_T("www.google.com")))
wxSleep(5);
wxApp::IsMainLoopRunning();
wxInputStream *httpStream = get.GetInputStream(_T("/intl/en/about.html"));
if (get.GetError() == wxPROTO_NOERR)
{
wxString res;
wxStringOutputStream out_stream(&res);
httpStream->Read(out_stream);
wxMessageBox(res);
}
else
{
wxMessageBox(_T("Unable to connect!"));
}
wxDELETE(httpStream);
get.Close();
如果您想要更灵活的解决方案,请考虑使用libcurl。
取决于您想从哪里“下载”它,以及文件服务器如何允许下载文件。服务器可能使用 FTP、HTTP 或其他更模糊的东西。无法从您的问题中看出其中没有有用的信息。
一般来说,我不会使用 wxWidgets 来完成这项任务。wxWidgets 是一个 GUI 框架,带有一些附加功能,用于各种可能对您的情况有帮助或可能没有帮助的东西。
HTTP
正如Andrejs建议的那样,从FTP
使用wxFTP
wxFTP ftp;
// if you don't use these lines anonymous login will be used
ftp.SetUser("user");
ftp.SetPassword("password");
if ( !ftp.Connect("ftp.wxwindows.org") )
{
wxLogError("Couldn't connect");
return;
}
ftp.ChDir("/pub");
wxInputStream *in = ftp.GetInputStream("wxWidgets-4.2.0.tar.gz");
if ( !in )
{
wxLogError("Coudln't get file");
}
else
{
size_t size = in->GetSize();
char *data = new char[size];
if ( !in->Read(data, size) )
{
wxLogError("Read error");
}
else
{
// file data is in the buffer
...
}
delete [] data;
delete in;
}
您没有定义“下载文件”对您意味着什么。
如果您想使用 HTTP 检索某些内容,您应该使用像libcurl这样的HTTP客户端库并发出适当的 HTTP请求。GET