Я использую WinInet для подключения к FTP-серверу. Я использую FtpCommand()
для отправки команды «PASV» для переключения из активного в пассивный режим. Сейчас я ищу противоположную команду для переключения из пассивного в активный режим. Кто-нибудь знает как это сделать?
Переключатель FTP WinInet из пассивного режима в активный при подключении?
Ответы (1)
Активный режим включается отправкой PORT
(или _ 2_) вместо отправки _ 3_ (или EPSV
). _5 _ / _ 6_ сообщает серверу, какой IP / порт ему необходимо для активного подключения в вашей системе.
Если вы хотите понять, как работает протокол FTP, я предлагаю вам прочитать спецификацию FTP, RFC 959 и его различных расширений, в частности RFC 2428 и RFC 3659.
В WinInet режим передачи обычно устанавливается в начале сеанса, когда вы вызываете _ 7_ или _8 _. Если вы укажете флаг INTERNET_FLAG_PASSIVE
, он включит пассивный режим. Если вы не укажете флаг, режим будет определяться параметрами Интернета пользователя по умолчанию. Этот режим позволяет FtpGetFile()
/ _ 11_ и _ 12_ / _ 13_ для работы с собственными подключениями к данным. Как только режим установлен для сеанса, его нельзя изменить, AFAIK.
Однако вы можете использовать FtpCommand()
для отправки любого FTP вручную, включая _15 _ / _ 16_ и _17 _ / _ 18_. Если вы установите для параметра fExpectResponse
значение TRUE, выходной параметр phFtpCommand
даст вам новый HINTERNET
дескриптор, если будет создан сокет данных. Вы можете использовать этот дескриптор с InternetReadFile()
и _ 23_ для передачи файлов и списков каталогов через это соединение для передачи данных.