libcurl - 保持连接“打开”以上载多个文件(FTP)

时间:2011-06-20 13:47:58

标签: c curl ftp libcurl

我需要将目录上传到我的应用程序上的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);

1 个答案:

答案 0 :(得分:12)

只需重复使用相同的句柄,它将尽可能地保持连接打开,随后的传输将重新使用前一个。

使用easy界面时,连接缓存将保持在简单的句柄中。如果您改为使用多接口,则连接缓存将保留在多个句柄中,并将在同一个多句柄中使用的所有简单句柄之间共享。