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
Просто повторите использование одного и того же дескриптора, и он будет поддерживать соединение как можно больше, и последующие передачи будут повторно использовать предыдущий.
Когда вы используете простой интерфейс, кеш подключений хранится в пределах простого дескриптора. Если вместо этого вы используете мультиинтерфейс, кеш подключений будет храниться в мультируле и будет использоваться всеми легкими дескрипторами, которые используются в одном и том же дескрипторе.