Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > получить файл по ftp


Автор: slater 10.8.2010, 07:34
подскажите как мне получить файл, я написал пока программу которая коннектится по IP и на 21 порт, и получаю приветствие от ftp сервера.

подскажите каким образом программно мне получить дальше файл(хотя бы расскажите алгоритм), если я знаю путь к нему и его имя.
сервер анонимный
очень надеюсь на вас


Автор: boostcoder 10.8.2010, 08:20
как-то так:
Цитата

PASV
RETR <filename>

Автор: azesmcar 10.8.2010, 08:21
Цитата(slater @  10.8.2010,  07:34 Найти цитируемый пост)
очень надеюсь на вас

надеяться не на нас надо а на http://www.ietf.org/rfc/rfc0959.txt.

Автор: slater 10.8.2010, 08:39
нда)))

Автор: MAKCim 10.8.2010, 08:43
Цитата(slater @  10.8.2010,  08:39 Найти цитируемый пост)
нда))) 

действительно, нужно смотреть rfc

Автор: slater 10.8.2010, 08:47
а библиотеку libcurl?!
вот такой пример нашел

http://curl.haxx.se/libcurl/c/ftpget.html

единственно, при компиляции он не находит .тих библиотек, говорит что не может найти ссылки на функции

подскажите как компилить правильно

я делал компиляцию gcc -o ftpget ftpget.c

Автор: azesmcar 10.8.2010, 08:55
Цитата(slater @  10.8.2010,  08:47 Найти цитируемый пост)
а библиотеку libcurl?!

а причем тут библиотека libcurl? Вопрос был о протоколе FTP, пытаться реализовать протокол не читая RFC не лучшая идея.

Цитата(slater @  10.8.2010,  08:47 Найти цитируемый пост)
я делал компиляцию gcc -o ftpget ftpget.c

Цитата

gcc -lcurl -o ftpget ftpget.c

как-то так

Автор: slater 10.8.2010, 08:56
ясно, спасибо ребята, просто ищу попроще способ получить файл по ftp

Автор: azesmcar 10.8.2010, 08:57
Цитата(slater @  10.8.2010,  08:56 Найти цитируемый пост)
ясно, спасибо ребята, просто ищу попроще способ получить файл по ftp 

проще через command-line.

Автор: slater 10.8.2010, 08:59
Цитата(azesmcar @ 10.8.2010,  08:57)
Цитата(slater @  10.8.2010,  08:56 Найти цитируемый пост)
ясно, спасибо ребята, просто ищу попроще способ получить файл по ftp 

проще через command-line.

на системе не будет ftp клиента

Автор: proc_maker 17.8.2010, 12:44
Привет!

Я когдато тоже бороздил RFC и сделал примерно так:

PASV - работаем в пассивном режиме

сервер нам дает строку с данными для подключения соединения данных примерно так:

227 Entering Passive Mode (127,0,0,1,129,178).

Парсим гдето так:

int a,b,c,d, p1, p2;
sscanf(ОтветСервера, "(%i,%i,%i,%i,%i,%i", &a, &b, &c, &d, &p1, &p2);
sprintf(ip, "%d.%d.%d.%d", a, b, c, d);
port=(p1<<8) | p2;


Подключаемся туда

Теперь у нас 2 коннекта - первый-управляющий, второй-поток данных

В контрольное соединение говорим "RETR /path/path/filename"

Проверяем ответ сервера - если нет ошибок - начинаем читать данные из соединения потока данных.

Автор: slater 19.8.2010, 09:13
proc_maker, спасибо большое!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)