2014-08-28 2 views
0

Я пытаюсь реализовать libcurl для SFTP и FTP-передач. Во время передачи я хочу использовать протокол SFTP. В случае неудачи было бы неплохо, если бы libcurl мог попробовать FTP, прежде чем полностью отказаться.libcurl, использование CURLOPT_REDIR_PROTOCOLS

Целью является то, что пользователь отправит данные на удаленный сервер. Если вы обнаружите, что он не является sftp-сервером, тогда он падает на возможность того, что он является ftp-сервером.

Я связывал URL с «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 не может автоматически использовать другой протокол, если он не работает, такая логика должна быть реализована вашим приложением.

Смежные вопросы