我正在使用libcurl將文件上傳到遠程ftp服務器。我想確保服務器已準備好開始接收上傳文件,然後才能真正開始發送它們(我無法上傳文件進行測試,必須事先知道ftp服務器是否準備就緒)。理想情況下,我想編寫一個代碼,它將登錄到ftp服務器並將目錄切換到遠程服務器上的目標目錄。如果測試通過,我可以假定服務器已準備好接收文件。我寫了下面的代碼使用libcurl檢查FTP登錄
curl_global_init(CURL_GLOBAL_ALL);
m_curl = curl_easy_init(); // Get a curl handle
if (!m_curl)
return -1;
curl_easy_setopt(m_curl, CURLOPT_USERNAME, "username");
curl_easy_setopt(m_curl, CURLOPT_PASSWORD, "password");
curl_easy_setopt(m_curl, CURLOPT_UPLOAD, 1L);
struct curl_slist* headerList = NULL;
headerList = curl_slist_append(headerList, "CWD directory");
curl_easy_setopt(m_curl, CURLOPT_URL, "ftp://192.168.1.2/");
curl_easy_setopt(m_curl, CURLOPT_POSTQUOTE, headerList);
CURLcode res = curl_easy_perform(m_curl);
if(res == CURLE_OK)
return 0;
else
return -1;
的用戶名和密碼是否正確,並在FTP根目錄下存在。我看網絡捕獲,似乎在成功登錄後,我的客戶端請求「PWD」,它傳遞正常,但它要求目錄的大小,但它得到550錯誤,無法獲得文件大小。然後,我嘗試了沒有headerList,只是登錄,再次登錄通過罰款和PWD請求後,我得到500 OOPS,vsf_sysutil_recv_peek沒有數據。任何想法如何以類似的方式測試服務器?
我開始使用完整的URL和沒有CWD,但我得到了500 OOPS,vsf_sysutil_recv_peek沒有數據,所以我想我沒有正確使用libcurl。首先我感謝你的回答,我所做的只是添加最後的斜線,就是這樣。一般來說,我不認爲URL中的尾部斜線是代碼成功或失敗的關鍵,大多數規範化的URL都沒有結尾斜線,也許考慮支持URL而不使用斜線。 – e271p314
libcurl支持的URL很好,沒有斜線。但無論如何,這是無關緊要的話題。 –