Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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 ?


 
Dennis I. Komarov ©   (2012-08-22 19:43) [41]


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

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


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


> Dennis I. Komarov ©   (22.08.12 19:43) [41]


Да не хочет он читать.
Он писАть хочет)


 
Anatoly Podgoretsky ©   (2012-08-22 20:37) [43]

> Сергей М.  (22.08.2012 20:23:42)  [42]

Чукча не читатель.


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


> Да не хочет он читать.
> Он писАть хочет)

...тернист и колюч, а сдавать надо


 
Владимир777   (2012-08-23 17:49) [45]

Да пошли Вы все...


 
Amoeba_   (2012-08-23 18:54) [46]


>  Владимир777   (23.08.12 17:49) [45]
>
> Да пошли Вы все...

Ну зачем так резко ...
Cходи со своей проблемой (с учетом всего вышесказанного) на www.delphikingdom.com
Там не ерничают, если сам с дуру не спровоцируешь.



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

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.56 MB
Время: 0.072 c
2-1335777792
Vladolin7
2012-04-30 13:23
2013.03.22
Как ввести данные в поле Memo?


2-1342192815
Wadimka
2012-07-13 19:20
2013.03.22
Помогите с регистрацией класса


4-1259316889
Konstantin
2009-11-27 13:14
2013.03.22
поиск новых файлов


15-1351590930
Palladin
2012-10-30 13:55
2013.03.22
Как в директивах препроцессора с# target framework учесть?


15-1352356266
Niel
2012-11-08 10:31
2013.03.22
SQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский