Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

FTP-сервер не открывает сокет   Найти похожие ветки 

 
Владимир777   (2012-08-19 18:41) [0]

1. Пишу простенький ftp-клиент c использованием компонента ClientSocket.
2. Тестирую в Filezilla Server, на локалке.
3. Последовательность действий:
   открываю сокет для команд (порт -21).
   отправляю логин, пароль. Получаю положительные ответы.
   отправляю команду PORT (порт 20) для активного подключения.
   получаю ответ: 200 Port command successful
   отправляю команду LIST и в окне сервера получаю:
   "150 Opening data channel for directory list.
     425 Can"t open data connection."
Знаю тема частая, но общего и внятного решения я так и не нашёл


 
Владимир777   (2012-08-19 18:57) [1]

Если меняю номер порта для сокета данных на любой другой (кроме 20 и 21), то в окне Filezilla Server  на короткое время в колонке transfer напротив моего подключения (на командном сокете) появляется рисунок папки (то есть сервер пытается что-то передать, но не может).
Если меняю номер порта для сокета данных на 21 (оба - 21), то сервер высылает список файлов, в оответе на команду LIST - вижу это в логе Filezill-ы, но каждый раз пересылка неудачно завершается:

"(000029)19.08.2012 17:57:20 - (not logged in) (127.0.0.1)> -r--r--r-- 1 ftp ftp           1800 Jul 05  2012 paral.asm
(000029)19.08.2012 17:57:20 - (not logged in) (127.0.0.1)> 500 Syntax error, command unrecognized.
(000029)19.08.2012 17:57:20 - (not logged in) (127.0.0.1)> disconnected.
"


 
Сергей М. ©   (2012-08-19 19:07) [2]


> отправляю команду PORT (порт 20) для активного подключения


Для организации канала передачи данных в активном режиме TClientSocket совершенно не подходит - для этого нужен хотя бы TServerSocket


 
Медвежонок Пятачок ©   (2012-08-19 19:20) [3]

и в окне сервера получаю:
  "150 Opening data channel for directory list.
    425 Can"t open data connection."


Осталось только понять, что сервер тебе человеческим голосом говорит, что не может соединиться с тобой по указанному тобой же порту, так как пушкина убили на дуэли и порт он открыть за тебя не сможет.


 
Владимир777   (2012-08-19 19:23) [4]

А Вы ничего не путаете? Нигде ничего об этом не читал.


 
Владимир777   (2012-08-19 19:24) [5]

Медвежонок Пятачок, не надо умничать, подскажите лучше как сделать, что бы сервер порт открыл.


 
Сергей М. ©   (2012-08-19 19:27) [6]


> Нигде ничего об этом не читал


О чем ты не читал ? И почему не читал ?)


 
Медвежонок Пятачок ©   (2012-08-19 19:34) [7]

чтобы сервер открыл дата-порт, нужно попросить сервер перейти в пассив режим.

а перед тем как писать своего фтп клиента, нехило было бы изучить сам фтп протокол


 
Владимир777   (2012-08-19 19:34) [8]

Сергей М. я не читал о том, что для подключения в активном режиме ftp-клиенту нужен компонент ServerSocket. А не читал, потому что нигде не встречал такой информации.


 
Медвежонок Пятачок ©   (2012-08-19 19:35) [9]

ну значит нехрен и браться


 
Сергей М. ©   (2012-08-19 19:37) [10]


> Владимир777   (19.08.12 19:34) [8]


Ну тогда открой для себя америку:

http://asweb.ru/notes/miscellaneous/ftpmodes/


 
Dennis I. Komarov ©   (2012-08-19 20:23) [11]

RFC 959, 2577


 
Владимир777   (2012-08-19 20:32) [12]

Dennis I. Komarov, что это такое?


 
Inovet ©   (2012-08-19 20:35) [13]

> [12] Владимир777   (19.08.12 20:32)
> Dennis I. Komarov, что это такое?

http://www.google.ru/#hl=ru&gs_nf=1&cp=13&gs_id=b&xhr=t&q=RFC+959%2C+2577&pf=p&newwindow=1&output=search&sclient=psy-ab&oq=RFC+959,+2577&gs_l=&pbx=1&bav=on.2,or.r_gc.r_pw.r_qf.&fp=560735a0f168c942&biw=1153&bih=81 4


 
Владимир777   (2012-08-19 20:38) [14]

Переписал:
Последовательность действий:
   открываю сокет для команд (порт -1025).
   отправляю логин, пароль. Получаю положительные ответы.
   отправляю команду PASV (порт 20) для пассивного подключения.
   получаю ответ: 227 Entering Passive Mode (127,0,0,1,4,22)
   открываю сокет для данных (порт 1046 (4*256+22))
   отправляю команду LIST
   в окне Filezilla Server  на короткое время в колонке transfer напротив  
   моего    подключения (на командном сокете) появляется рисунок папки
   после её исчезновения в окне сервера получаю:
   "425 Can"t open data connection."


 
Медвежонок Пятачок ©   (2012-08-19 20:46) [15]

отправляю команду PASV (порт 20) для пассивного подключения.
открываю сокет для данных (порт 1046 (4*256+22))


....дятел оборудован клювом.


 
Владимир777   (2012-08-19 20:52) [16]

Извините, описка: отправляю команду PASV для пассивного подключения.

Медвежонок Пятачок, не обязательно демонстрировать свой идиотизм на форуме. Моё незнание теории - дело другое.


 
Медвежонок Пятачок ©   (2012-08-19 20:53) [17]

..... может быть использован пассивный режим. В этом режиме клиент использует поток управления, чтобы послать серверу команду PASV, и затем получает от сервера его IP-адрес и номер порта, которые затем используются клиентом для открытия потока данных с произвольного клиентского порта к полученному адресу и порту.

http://ru.wikipedia.org/wiki/FTP


 
Dennis I. Komarov ©   (2012-08-19 21:33) [18]


>  Моё незнание теории - дело другое.

Хочешь писать протоколы вручную - учи спецификации...


 
Владимир777   (2012-08-19 23:00) [19]

"используются клиентом для открытия потока данных с произвольного клиентского порта к полученному адресу и порту." - а как это сделать?

получаю ответ: 227 Entering Passive Mode (127,0,0,1,4,22)
значит, полученный адрес - 127,0,0,1, порт  - 1046 (4*256+22)
Теперь надо открыть сокет данных?


 
Palladin ©   (2012-08-19 23:34) [20]

ОНО: народ, я новый нюк нашел, ща всех поубиваю!!!
ОНО: дайте ай-пи какого-нить лоха!!!
Кто-то: 127.0.0.1
ОНО: пасиба!
ОНО: щас он подохнет
* ОНО вышло из чата


 
Владимир777   (2012-08-20 06:38) [21]

Palladin, а можно по-понятней?


 
brother ©   (2012-08-20 07:26) [22]

[20] баян!


 
Сергей М. ©   (2012-08-20 11:42) [23]

Заметался, бедняга)

То


> отправляю команду PORT (порт 20) для активного подключения


то


> отправляю команду PASV (порт 20) для пассивного подключения


ты уж определись наконец какой режим тебе нужен) ..


 
Dennis I. Komarov ©   (2012-08-20 21:08) [24]


> ты уж определись наконец какой режим тебе нужен) ..

хорошо бы еще знать, чем они отличаются...


 
brother ©   (2012-08-20 21:22) [25]

думаю автор с [10] уже ознакомился?


 
Владимир777   (2012-08-20 22:41) [26]

Последовательность действий:
открываю сокет для команд (порт -1025).
отправляю логин, пароль. Получаю положительные ответы.
отправляю команду PASV для пассивного подключения.
получаю ответ: 227 Entering Passive Mode (127,0,0,1,4,22)
открываю сокет для данных (порт 1026)
отправляю команду LIST
в окне Filezilla Server на короткое время в колонке transfer напротив
моего подключения (на командном сокете) появляется рисунок папки
после её исчезновения в окне сервера получаю:
"425 Can"t open data connection."


 
Сергей М. ©   (2012-08-21 10:59) [27]


> открываю сокет для данных (порт 1026)


И где самый важный шаг на этапе создания канала данных в пассивном режиме - коннект клиента с порта 1026 к серверу на порт 22 ?


 
Сергей М. ©   (2012-08-21 11:04) [28]


> на порт 22


Вру, не на 22, а на 1046 (4 shl 8 + 22)


 
Anatoly Podgoretsky ©   (2012-08-21 11:53) [29]

> Сергей М.  (21.08.2012 11:04:28)  [28]

Опять врешь, на 1058


 
Сергей М. ©   (2012-08-21 12:09) [30]


> Anatoly Podgoretsky ©   (21.08.12 11:53) [29]


Не, теперь врешь ты - октеты номера порта сервер передает в десятичном виде.
А 1058 - это если бы 4,22 были в hex.


 
Anatoly Podgoretsky ©   (2012-08-21 12:23) [31]

> Сергей М.  (21.08.2012 12:09:30)  [30]

Тогда дело хуже, зачем применяешь хекс при умножение 4 на 256, инаече у тебя
бы не получилось 1024+, умножай тогда на 100/1000.


 
Сергей М. ©   (2012-08-21 12:33) [32]


> Anatoly Podgoretsky ©   (21.08.12 12:23) [31]


Толя, ты не выспался что ли ?)

Где я "хекс" применяю ?

4 - дес. значение ст.байта 16-разрядного дв.слова номера порта.

Двигаем его влево на 8 двоичных разрядов, что эквивалентно умножению на  256 (dec) -> получаем 1024 (dec)

К  1024 (dec) прибавляем 22 (dec) (значение мл.байта 16-разрядного дв.слова номера порта)  -> получаем 1046 (dec)


 
Владимир777   (2012-08-21 18:19) [33]


> > открываю сокет для данных (порт 1026) И где самый важный
> шаг на этапе создания канала данных в пассивном режиме -
>  коннект клиента с порта 1026 к серверу на порт 1046 ?

А как это сделать, Сергей М.?
Присваиваю:
сокет для данных (Port=1026), Host= 127.0.0.1
Открываю сокет и всё, или как-то изменить адрес, или host?


 
Dennis I. Komarov ©   (2012-08-21 19:39) [34]


> Владимир777   (21.08.12 18:19) [33]
>
> А как это сделать, Сергей М.?
> Присваиваю:
> сокет для данных (Port=1026), Host= 127.0.0.1
> Открываю сокет и всё, или как-то изменить адрес, или host?
>

возьми готовое решение...


 
Владимир777   (2012-08-21 21:50) [35]

Dennis I. Komarov, если бы нашёл готовое решение (ftp-клиент на ClientSocket-е), то не просил бы помощи.
Как законнектится с одного порта на другой?


 
Dennis I. Komarov ©   (2012-08-21 22:04) [36]


> Владимир777   (21.08.12 21:50) [35]
> Dennis I. Komarov, если бы нашёл готовое решение (ftp-клиент
> на ClientSocket-е), то не просил бы помощи.
> Как законнектится с одного порта на другой?

А чем обусловлено условие "ftp-клиент на ClientSocket-е"? Без обид, ну не хватает знаний...


 
Владимир777   (2012-08-21 22:08) [37]

Задание на лабу


 
Dennis I. Komarov ©   (2012-08-21 22:46) [38]


> Задание на лабу

тогда, только грызть теорию...


 
Владимир777   (2012-08-22 00:11) [39]

CiientwinSocket.LocalPort=1046


 
Сергей М. ©   (2012-08-22 10:08) [40]


> CiientwinSocket.LocalPort=1046


Какой же он Local, если этот порт открывает серверная сторона, которая по отношению к клиенту Remote ?



Страницы: 1 2 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.153 c
15-1346743469
Dimka Maslov
2012-09-04 11:24
2013.03.22
Бубен не помогает.


15-1343248203
Юрий
2012-07-26 00:30
2013.03.22
С днем рождения ! 26 июля 2012 четверг


2-1342612696
Светлана
2012-07-18 15:58
2013.03.22
Контекстное и главное меню


15-1344639808
Jonis_84
2012-08-11 03:03
2013.03.22
почему если убираешь строки про реестр nod32 ругается


15-1341390679
alexdn
2012-07-04 12:31
2013.03.22
Индексация припаркованного домена