![]() |
|
|
#1
|
|||
|
|||
![]() Добрый день, нужно написать ФТП клиент который может скачать файл с сервера, при этом не используя готовых компонентов(По типу IdFTP).
Столкнулся сразу же с проблемой, как получить ЛИСТ ? И не могу понять логику получения файла с сервера. Пока написал совсем немного: Код:
procedure TForm1.clntsckt1Read(Sender: TObject; Socket: TCustomWinSocket); begin mmo1.Lines.Add(clntsckt1.Socket.ReceiveText()); end; procedure TForm1.btn1Click(Sender: TObject); begin clntsckt1.Host:=edt1.Text; clntsckt1.Port:=21; clntsckt1.Open; end; procedure TForm1.btn2Click(Sender: TObject); begin clntsckt1.Socket.SendText('USER '+ edt2.Text + #13#10); clntsckt1.Socket.SendText('PASS '+ edt3.Text + #13#10); end; procedure TForm1.btn3Click(Sender: TObject); begin clntsckt1.Socket.SendText('CWD '+ '\' + #13#10); end; procedure TForm1.btn4Click(Sender: TObject); begin portA := Random(179); portB := IntToStr(portA); clntsckt1.Socket.SendText('PORT '+ '127,0,0,1,8,'+ portB + #13#10); clntsckt1.Socket.SendText('LIST'+ #13#10); end; procedure TForm1.btn5Click(Sender: TObject); begin clntsckt1.Socket.SendText('QUIT'+ #13#10); end; |
#2
|
|||
|
|||
![]() Ну, команду серверу ты послал.
А кто ответ читать будет. ЗЫ. Не понятно, чем Indy не угодил. Это читсый дельфевый код, никаких сторонних библиотек, кроме системных, которые ты и так используешь, не требует. |
#3
|
|||
|
|||
![]() К сожалению задание получил от преподавателя, и потому когда я показал программу работающую на Инди, он меня просто послал прочь, нужно сделать всё именно так.
Прилагаю ответы сервера. Последние две строчки это ответ при запросе ЛИСТа. Как его обработать не понимаю. Пытался втулить и другие сокеты и сервер и клиент для того что бы получать ЛИСТ, но видимо делал это неправильно, не сработало. Мне бы увидеть хоть кусок работающего кода, пытался расшифровывать IdFTP, очень много неясных для меня параметров, потому никак это не помогло в написании. ![]() Последний раз редактировалось semen0000, 11.12.2015 в 19:11. |
#4
|
|||
|
|||
![]() Для начала попробуй свои комманды из telnet'а посылать.
Что-то мне кажется, что PORT тебе не нужен для LIST. Тебе надо TYPE. Код:
TYPE A LIST PS. Кстати, вот РФЦ: https://www.ietf.org/rfc/rfc959.txt |