将 sftp 协议与 libcurl 结合使用 — 如何列出目录的内容?

Geo*_*ira 3 c++ sftp curl libcurl

我有一点疑问。我需要获取 SFTP 服务器上特定目录内的文件列表。我将使用 CUROPT_DIRLISTONLY 来获取名称,但我不确定如何获取它们。这是我现在拥有的和平代码:

   string baseUrl(serverAddr + "/" + __destDir);
   curl_easy_setopt(anEasyHandle, CURLOPT_URL, (baseUrl).c_str());
   curl_easy_setopt(anEasyHandle, CURLOPT_VERBOSE,      1L);
   curl_easy_setopt(anEasyHandle, CURLOPT_DIRLISTONLY, 1);
   curl_easy_setopt(anEasyHandle, CURLOPT_QUOTE, commandList);

   curl_easy_perform(anEasyHandle);

   curl_easy_reset(anEasyHandle);
Run Code Online (Sandbox Code Playgroud)

如果我是对的,curl_easy_perform只返回一个ERROR_CODE(它适用的成功或错误),对吗?那么哪里可以获取文件列表呢?

如果我在终端上运行它:curl -u user:pass sftp://server/path/ -l 我得到了我想要的列表....

任何帮助,将不胜感激。

提前致谢,乔治

Bil*_*eal 5

您需要创建一个具有以下签名的“回调函数”:

size_t function( void *ptr, size_t size, size_t nmemb, void *stream);
Run Code Online (Sandbox Code Playgroud)

然后调用curl_easy_setopt将回调函数设置为CURLOPT_WRITEFUNCTION。将从远程服务器接收到的每个数据块都会调用您的函数,这应该是某种形式的目录列表。

免责声明:我只阅读了这方面的文档,没有尝试过。