我正在尝试为 SFTP 和 FTP 传输实现 libcurl。在传输过程中,我想使用SFTP协议(protocol)。万一失败,如果 libcurl 可以在完全放弃之前尝试 FTP,那就太好了。
目的是用户将数据发送到远程服务器。在内部,如果发现它不是 sftp 服务器,则判定它可能是 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);
有什么建议吗?有人可以指导我举一个例子吗?或者至少让我知道我的方向是否正确。
最佳答案
CURLOPT_REDIR_PROTOCOLS是您设置的位掩码,用于告诉 libcurl 允许重定向到哪些协议(protocol)。事实上,重定向只能通过 HTTP 接收。重定向是服务器设置的指令,用于在不同的 URL 上尝试请求。
SFTP 没有重定向功能,因此只要您不使用 HTTP,就没有必要设置此位掩码。
如果协议(protocol)失败,libcurl 无法自动尝试不同的协议(protocol),此类逻辑必须由您的应用程序实现。
关于c - libcurl,用法 CURLOPT_REDIR_PROTOCOLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25558500/