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);

Ответ 1

Просто повторите использование одного и того же дескриптора, и он будет поддерживать соединение как можно больше, и последующие передачи будут повторно использовать предыдущий.

Когда вы используете простой интерфейс, кеш подключений хранится в пределах простого дескриптора. Если вместо этого вы используете мультиинтерфейс, кеш подключений будет храниться в мультируле и будет использоваться всеми легкими дескрипторами, которые используются в одном и том же дескрипторе.