2012-01-23 61 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無法正確識別的回覆,因此它一直在等待更多永遠不會到達的數據。很難確切地說,如果沒有看到來回的實際交流真的是什麼樣子的話。