2014-08-28 78 views
0

我試圖爲SFTP和FTP傳輸實現libcurl。在傳輸過程中,我想使用SFTP協議。如果失敗,如果libcurl可以在完全放棄之前嘗試FTP,那將會很不錯。libcurl,用法CURLOPT_REDIR_PROTOCOLS

其目的是用戶將數據發送到遠程服務器。在內部,如果發現它不是一個sftp服務器,那麼它就會成爲一個ftp服務器。

我一直在使用「sftp://」或「ftp://」連接網址。我試圖做到以下幾點,

curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1); 
curl_easy_setopt(curl_handle, CURLOPT_PROTOCOLS, CURLPROTO_SFTP | CURLPROTO_FTP); 
curl_easy_setopt(curl_handle, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_SFTP | CURLPROTO_FTP); 

有什麼建議嗎?有人能指導我舉一個例子嗎?或者至少讓我知道我是否朝着正確的方向前進。

回答

1

CURLOPT_REDIR_PROTOCOLS是您設置的位掩碼,用於告知libcurl哪些協議允許重定向。重定向實際上只能通過HTTP接收。重定向是來自服務器的指令集,而不是在不同的URL上嘗試請求。

SFTP沒有重定向功能,因此只要您不使用HTTP,就沒有必要設置此位掩碼。

如果發生故障,libcurl無法自動嘗試不同的協議,這種邏輯必須由您的應用程序來實現。