Устанавливаю соединение с ftp — сервером через прокси — сервер. Скачиваю файлы и получаю список файлов в директории с ftp — сервера без проблем.
Когда устанавливаю соединение с ftp — серв. напрямую, то при запросе файла получаю ответ с ftp — сервера: "350 Restarting at 0". Но сами данные не приходят. Ожидаю данные в течение трех минут. Причем, при запросе "LIST some_dir\r\n", я получаю данные без проблем.
Соединение устанавливаю с помощью CSocket в синхронном режиме.
В чем может быть проблема?
Здравствуйте, butcher, Вы писали:
B>Возможно вы используете активный режим передачи. Попробуйте пассивный (как в случае с proxy).
В том то и дело, что я использую один и тот же алгоритм скачивания. Может ли быть проблема в том, что я делаю запрос на файл следующим образом:
"REST 0\r\nRETR some_folder/some_file\r\n"
т.е. я отправляю два запроса сразу, в случае с прокси это работает, а случае с прямым соединением я получаю только ответ на первую команду
REST (150 Restarting at 0\r\n)
а ответа на вторую нет.
Если я отправляю сначала REST 0, затем читаю ответ, то ответ выглядит следующим образом 150 Restarting at 'какое — то огромное число'. По протоколу ответ 150 значит ошибка. (это при подключении через модем)
При прямом подключении по выделенной линии на первую команду получаю ответ 350, далее команду "RETR some_folder/some_file\r\n". Ответ 500.
Должен ли я для того, чтобы скачать файл, сделать рабочим тот каталог, в котором он лежит или достаточно указать к нему путь?
Здравствуйте, butcher, Вы писали:
B>Возможно вы используете активный режим передачи. Попробуйте пассивный (как в случае с proxy).
В общем нашел я ошибку. Как оказалось ошибка была не в нарушении ftp — протокола или режиме передачи файла, а в простой моей невнимательности... Присоединялся не к пассивному хосту и порту, а к активному)))