2012-01-23 30 views
0

我正在使用libcurl上传到FTP服务器。一般情况下,事情是正常工作,但我总是得到一个特定的服务器超时错误(超时设置为一分钟)。文件本身的上传确实发生了。使用libcurl进行FTP上传:获取CURLINFO_DATA_IN,超时

我用curl_easy_setopt和CURLOPT_DEBUGFUNCTION来设置一个调试函数来查看发生了什么。一旦上传开始,我发现curl_infotype被设置为CURLINFO_DATA_OUT对于许多调用,但我也看到几个调用curl_infotype设置为CURLINFO_DATA_IN。然后,一旦上传完成,但服务器仍然连接,我一直将curl_infotype设置为CURLINFO_DATA_IN,直到达到超时。

有些问题: - 为什么我得到这个CURLINFO_DATA_IN?
- 我想如何回应它?

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

回答

0

调试回调给你正在发送和接收的实际数据,你看那个数据还没有看到什么是什么?传输完成后,FTP服务器会将回复发送回客户端,以便可以解释您看到的CURLINFO_DATA_IN通知。有可能服务器正在发回一个libcurl无法正确识别的回复,因此它一直在等待更多永远不会到达的数据。很难确切地说,如果没有看到来回的实际交流真的是什么样子的话。