libcurl —複数のファイルをアップロードするために接続を「開いたまま」にする(FTP)

c curl ftp libcurl
libcurl —複数のファイルをアップロードするために接続を「開いたまま」にする(FTP)

アプリケーションのFTPサーバーにディレクトリをアップロードする必要があり、_libcurl_を使用する予定です。 多くのファイルを含むディレクトリを直接アップロードする方法はないので、それは私にとって理にかなっています。 ただし、多くのファイルをアップロードすることについて言及することはできませんでした。

ディレクトリ内のファイルのリストを取得した場合、ループでアップロードできます。 オプション `CURLOPT_FTP_CREATE_MISSING_DIRS`はサブディレクトリに役立つかもしれませんが、ここでポイントを逃しているかどうかを知りたい場合、またはこれは深刻な欠点があります。

主な質問は次のとおりです。どうすれば接続を「オープン」に保つことができますか? 各ファイルで再接続すると、余分なオーバーヘッドが発生する可能性があります。

理想的には、使いやすいインターフェイスを使い続けたいと思います。 ただし、この場合に別のインターフェイスがより良いサポートを提供する場合は、それを使用します。

CURLcode ret;
CURL *handle = curl_easy_init();

/* Connect to FTP server using     *
 * the given username and password */

for ({each file}) {

    curl_easy_setopt(handle, ..., ...);
    ...
    ret = curl_easy_perform(handle);
    /* Analyse return code */
    curl_easy_reset(handle);
}

/* Disconnect from server */
curl_easy_clenup(handle);

  10  1


ベストアンサー

同じハンドルを再利用するだけで、接続は可能な限り開かれたままになり、後続の転送では以前の接続が再利用されます。

簡単なインターフェイスを使用すると、接続キャッシュは簡単なハンドル内に保持されます。 代わりにマルチインターフェイスを使用する場合、接続キャッシュはマルチハンドル内に保持され、同じマルチハンドル内で使用されるすべての簡単なハンドル間で共有されます。

12


タイトルとURLをコピーしました