2014-08-28 2 views
0

SFTP 및 FTP 전송을 위해 libcurl을 구현하려고합니다. 전송하는 동안 SFTP 프로토콜을 사용하고 싶습니다. 실패 할 경우, libcurl이 완전히 포기하기 전에 FTP를 시도 할 수 있다면 좋을 것입니다.libcurl, usage CURLOPT_REDIR_PROTOCOLS

목적은 사용자가 원격 서버로 데이터를 전송하는 것입니다. 내부적으로 sftp-server가 아닌 것으로 판명되면 ftp-server가 될 가능성이 있습니다.

"sftp : //"또는 "ftp : //"로 URL을 연결했습니다. 그리고 다음을 시도했습니다.

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은 하나의 프로토콜이 실패 할 경우 자동으로 다른 프로토콜을 시도 할 방법이 없습니다. 이러한 논리는 응용 프로그램에서 구현해야합니다.