Конференция "Сети" » FTP. PASV и PORT режимы. Принципы работы.
 
  • Виталий (10.11.13 14:45) [0]
    Доброго всем. Обьясните мне пожалуйста принципы работы пассивного и активного режима. Я не могу понять как именно их обрабатывать. Используя ftp.exe подключаюсь к своей программе. Она воспринимает все команды, которые не требуют открытия порта данных, и диалог идет нормально. Но когда я из ftp.exe посылаю команду PASV связь просто прерывается.
    Я не могу понять как мне описать на сервере реакцию - сначала открывать порт для данных, создавать новый сокет или нет, и когда сообщать клиенту что канал готов?
    При приеме команды PASV мой сервер сейчас возвращает в канал управления строку 227 Entering Passive Mode (тут данные). Но канал данных не открывает, как я понимаю он открывается потом для команд типа LIST REST и т.д., но не сразу.

    Но эта строка до клиента не доходит, send() сообщает ошибку 10053 (WSAECONNABORTED).
    Не пойму почему связь прерывается.
    Каков правильный механизм обработки PASV?
  • megavoid © (10.11.13 18:03) [1]
    первая же ссылка - даже с примером dataflow
    http://stackoverflow.com/questions/1699145/what-is-the-difference-between-active-and-passive-ftp
  • Виталий (10.11.13 19:42) [2]
    Я правильно понял:
    1) Клиент мне посылает PASV
    2) Мой обработчик команд "выбирает" новый порт данных, открывает новый сокет, биндит и ставит на него прослушку:

    ...socket(...
    ...bind(...
    ...listen(...


    3) После я отсылаю клиенту строку с кодом 227 (и параметрами нового порта), и в зависимости от команды либо пишу в открытый канал данные либо ловлю accept()-ом данные от клиента?
 
Конференция "Сети" » FTP. PASV и PORT режимы. Принципы работы.
Есть новые Нет новых   [134427   +34][b:0][p:0.001]