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フレームワークであり、あなたのケースで役立つかもしれないし、役に立たないかもしれない様々なもののためのいくつかの追加機能があります。
Andrejsが示唆するようにHTTP
、使用から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