0

wxWidgetsを使用してC++でファイルをダウンロードするにはどうすればよいですか?

グーグルしていて、すべてが何も表示されません!感謝します!

4

4 に答える 4

6

そのために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の使用を検討してください。

于 2012-08-27T16:42:57.810 に答える
1

「ダウンロード」する場所と、ファイルサーバーがファイルのダウンロードを許可する方法によって異なります。サーバーはFTP、HTTP、またはもっとあいまいなものを使用する可能性があります。有用な情報が含まれていない質問から判断する方法はありません。

一般的に、私はこのタスクにwxWidgetsを使用しません。wxWidgetsはGUIフレームワークであり、あなたのケースで役立つかもしれないし、役に立たないかもしれない様々なもののためのいくつかの追加機能があります。

于 2012-08-27T16:44:30.223 に答える
1

Andrejsが示唆するようにHTTP、使用からFTPwxFTP

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://docs.wxwidgets.org/stable/wx_wxftp.html#wxftp

于 2012-08-27T16:45:18.453 に答える
0

あなたは「ファイルのダウンロード」があなたにとって何を意味するかを定義していませんでした。

HTTPを使用してコンテンツを取得する場合は、 libcurlなどのHTTPクライアントライブラリを使用して、適切なHTTPリクエストを発行する必要があります。GET

于 2012-08-27T16:42:15.083 に答える