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

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

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