我试图在C中使用libcurl上传文件。数据传输失败。以下是日志消息。
如何解决此问题?
< 250 CWD命令成功。
EPSV
PASV
尝试x.x.x.x ... *无主机路由
无法连接到主机
关闭连接#0
无法连接到服务器
答案 0 :(得分:1)
这意味着当FTP服务器打开第二个端口供客户端连接时,您的客户端(libcurl)无法访问它。这很可能是由于防火墙或其他网络设备阻碍了您执行请求操作的能力。
替代原因可能是错误配置的ftp服务器,但如果它适用于其他用户,那似乎不太可能。
失败的另一个原因可能是你有一个不知道EPSV的活动防火墙,因此会被它弄糊涂并为你破坏它。将CURLOPT_FTP_USE_EPSV设置为0,尝试不使用它。
您可以尝试使用主动方法(这是大多数旧式FTP客户端默认执行的操作),这使客户端要求服务器连接回您。您可以使用CURLOPT_FTPPORT在libcurl中激活它。 (有关如何使用它的详细信息,请参阅文档。)