c - libcurl,用法 CURLOPT_REDIR_PROTOCOLS

标签 c ftp protocols sftp libcurl

我正在尝试为 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/

相关文章:

java - 避免使用 Java FTP 下载以前下载的文件

ftp - LFTP,仅下载在我执行 LFTP 的同一天创建的文件

ios - 关于使用 Swift 传递全局数据的建议

ios - Swift 中单例类的委托(delegate)

html - URL 中 http 协议(protocol)声明中的正斜杠

c - 将 Char 类型转换为结构类型

c - 通过单个发送调用发送的合理数据量

c - arm cortex m0 nf51822 c编程硬故障,真的很困惑

c - 在 C 中,数组的名称是指向它第一个元素的指针,不是吗?

batch-file - 通过批量自动FTP下载