使用libcurl上传FTP:获取CURLINFO_DATA_IN,超时

时间:2012-01-23 18:40:31

标签: c++ libcurl

我使用libcurl上传到FTP服务器。一般情况下工作正常,但我总是得到特定服务器的超时错误(超时设置为一分钟)。上传文件本身确实正确。

我使用curl_easy_setopt和CURLOPT_DEBUGFUNCTION来设置调试功能以查看正在发生的事情。一旦上传开始,我看到curl_infotype被设置为CURLINFO_DATA_OUT用于许多调用,但我也看到几个调用curl_infotype设置为CURLINFO_DATA_IN。然后,一旦上传完成但服务器仍然连接,我一直将curl_infotype设置为CURLINFO_DATA_IN,直到达到超时。

一些问题: - 为什么我得到这个CURLINFO_DATA_IN?
- 我怎么回应呢?

[编辑 - 我忘了提到FileZilla可以正确上传到该服务器]

1 个答案:

答案 0 :(得分:0)

调试回调为您提供正在发送和接收的实际数据,您是否查看了该数据但尚未查看它是什么?传输完成后,FTP服务器会向客户端发送回复,这样可能会导致您看到的CURLINFO_DATA_IN通知。服务器可能正在发回libcurl无法正确识别的回复,因此它会一直等待更多永远不会到达的数据。如果没有看到实际来回的真实情况,很难肯定地说。