libcurl,用法CURLOPT_REDIR_PROTOCOLS

时间:2014-08-28 21:42:20

标签: c ftp protocols sftp libcurl

我正在尝试为SFTP和FTP传输实现libcurl。在传输过程中,我想使用SFTP协议。如果失败,如果libcurl可以在完全放弃之前尝试FTP,那将是很好的。

目的是用户将数据发送到远程服务器。在内部,如果发现它不是sftp-server,那么可以归结为它是ftp服务器的可能性。

我一直在用“sftp://”或“ftp://”连接网址。我试着做以下事情,

curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curl_handle, CURLOPT_PROTOCOLS, CURLPROTO_SFTP | CURLPROTO_FTP);
curl_easy_setopt(curl_handle, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_SFTP | CURLPROTO_FTP);

有什么建议吗?有人可以指导我一个例子吗?或者至少让我知道我是否朝着正确的方向前进。

1 个答案:

答案 0 :(得分:1)

CURLOPT_REDIR_PROTOCOLS是一个位掩码,你设置告诉libcurl哪些协议允许重定向。实际上,重定向只能通过HTTP接收。重定向是服务器的指令集,而不是在不同的URL上尝试请求。

SFTP没有重定向功能,因此只要您不使用HTTP,就没有必要设置此位掩码。

如果一个失败,libcurl无法自动尝试不同的协议,这种逻辑必须由您的应用程序实现。