Допустимо ли для кода, использующего FTP для передачи файлов, иметь несколько открытых и закрытых соединений? - PullRequest
0 голосов
/ 07 сентября 2011

Учитывая этот простой двухэтапный псевдокод: 1. запрос списка файлов 2. загрузка каждого файла

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

Я новичок в FTP, так что это то, что меня беспокоит.

1 Ответ

1 голос
/ 07 сентября 2011

Да, это совершенно нормально. FTP - это протокол двух соединений. Поток команд (get, put, dir, cd и т. Д.) И поток данных (фактические файлы отправляются туда и обратно). Поток команд остается открытым на время вашего соединения (и считается «соединением»). Поток данных существует только при отправке / получении данных и будет открываться / закрываться несколько раз в типичном сеансе FTP.

Источник подключения к данным зависит от того, используете ли вы пассивный FTP. Для активных соединений ftp-сервер инициирует соединение для передачи данных обратно клиенту. Это делается с помощью клиента, говорящего «выполните команду« dir »и отправьте ее результаты обратно на IP x.x.x.x, порт yyy». Пассивные работы в обратном порядке. Клиент инициирует все подключения к серверу, и в основном делает dir. «Дайте мне список каталогов» и получите ответ «Хорошо, данные каталога доступны по IP-адресу x.x.x.x, порт YYY - приходите и получите их».

На уровне протокола клиент отправит PORT x.x.x.x.y.z , чтобы уведомить сервер об открытии соединения канала данных в активном режиме с клиентом по адресу x.x.x.x на порту (y * 256) + z. Клиент отправляет PASV для запроса пассивного режима; в этом случае ответ сервера содержит x.x.x.x.y.z, сообщающий клиенту об открытии соединения по ip и порту

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...