在libcurl中使用sftp协议 - 如何列出目录的内容?

时间:2010-04-06 13:13:38

标签: c++ curl sftp 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);

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

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

任何帮助都将不胜感激。

提前致谢, 乔治

1 个答案:

答案 0 :(得分:4)

您需要使用以下签名创建“回调函数”:

size_t function( void *ptr, size_t size, size_t nmemb, void *stream);

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

免责声明:我只阅读了documentation,未尝试过。