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

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

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