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 데이터가 없습니다. 어떤 생각으로 비슷한 방식으로 어떻게 서버를 테스트 할 수 있습니까?
전 CWL없이 전체 URL로 시작했지만 500 OOPS, vsf_sysutil_recv_peek 데이터가 없으므로 libcurl을 올바르게 사용하지 않는 것으로 나타났습니다. 우선 나는 당신의 대답에 감사 드리며, 내가 한 것은 후행을 추가하는 것이 었습니다. 일반적으로 코드 성공 또는 실패의 핵심이 될 URL의 후행 슬래시는 예상하지 않지만 정규화 된 URL의 대부분은 후행 슬래시가 없으며 슬래시가없는 URL을 지원하는 것으로 간주됩니다. – e271p314
libcurl은 후행 슬래시가없는 URL을 지원합니다. 어쨌든 여기서 주제를 벗어났습니다. –