gpt4 book ai didi

c++ - 在 windows 中通过 libcurl 通过 ssl 传输 ftp

转载 作者:太空宇宙 更新时间:2023-11-04 11:43:36 24 4
gpt4 key购买 nike

大家好!

我是 yanrk,我遇到了一个问题:

FTP 服务器为用户登录强制使用 SSL

所以我这样编码:

curl_easy_setopt(ftp_handle, CURLOPT_URL, "ftp://192.168.1.xxx:990");
curl_easy_setopt(ftp_handle, CURLOPT_USERNAME, "user");
curl_easy_setopt(ftp_handle, CURLOPT_PASSWORD, "password");
curl_easy_setopt(ftp_handle, CURLOPT_SSL_VERIFYPEER, 1L);
curl_easy_setopt(ftp_handle, CURLOPT_SSL_VERIFYHOST, 2L);
curl_easy_setopt(ftp_handle, CURLOPT_SSLVERSION, CURL_SSLVERSION_DEFAULT);
curl_easy_setopt(ftp_handle, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_SSL);
curl_easy_setopt(ftp_handle, CURLOPT_VERBOSE, 1L);
CURLcode res = curl_easy_perform(ftp_handle);

当我运行这段代码时,我收到消息:

  • 即将连接到 127.0.0.1 端口 990 (#0)
  • 正在尝试 127.0.0.1...
  • 添加句柄:conn: 0x3ff480
  • 添加句柄:发送:0
  • 添加句柄:recv: 0
  • Curl_addHandleToPipeline:长度:1
    • 连接 0 (0x3ff480) 发送管道:1,接收管道:0
  • 连接到 127.0.0.1 (127.0.0.1) 端口 990 (#0)

它阻塞在这里,而不是授权 ssl/tls

我搜索了很多页面,并尝试了它们,但总是失败

所以,有人知道如何修复这段代码吗?

谢谢!

最佳答案

在 libcurl 中使用 FTP://URL 意味着显式 FTPS,这意味着它将以纯文本开始并使用显式命令升级到 SSL。这通常在端口 21 上完成。

990 端口通常用于隐式 FTPS,这意味着服务器已经在协商阶段使用 SSL,然后您需要使用带有 libcurl 的 FTPS://URL。

根据您的错误描述,我猜您需要一个 FTPS://URL。

关于c++ - 在 windows 中通过 libcurl 通过 ssl 传输 ftp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20472045/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com