FTP грешка?

3 отговора 124 прегледа
#1

FTP грешка?

Здравейте! Защо на клиента, ми се появява следната грешка:
"Connection Closed Gracefully.", когато се помъча да приема файла изпратен от сървъра? Това е кода, който използвам:

сървър:

object ftps1: TIdFTPServer
Bindings = <>
CommandHandlers = <
item
CmdDelimiter = ' '
Command = 'proba_send_file'
Disconnect = False
Name = 'TIdCommandHandler0'
OnCommand = IdFTPServer1TIdCommandHandler0Command
ParamDelimiter = ' '
ReplyExceptionCode = 0
ReplyNormal.NumericCode = 0
Tag = 0
end>
DefaultPort = 21
Greeting.NumericCode = 220
Greeting.Text.Strings = (
'Indy FTP Server ready.')
Greeting.TextCode = '220'
MaxConnectionReply.NumericCode = 0
ReplyExceptionCode = 0
ReplyTexts = <>
ReplyUnknownCommand.NumericCode = 500
ReplyUnknownCommand.Text.Strings = (
'Syntax error, command unrecognized.')
ReplyUnknownCommand.TextCode = '500'
AnonymousAccounts.Strings = (
'anonymous'
'ftp'
'guest')
UserAccounts = IdUserManager1
SystemType = 'WIN32'
Left = 195
Top = 95
end
object IdUserManager1: TIdUserManager
Accounts = <
item
UserName = 'Proba'
Password = '123456'
RealName = 'Probov'
end>
CaseSensitiveUsernames = False
CaseSensitivePasswords = False
Left = 60
Top = 75
end

procedure TForm1.Button1Click(Sender: TObject);
begin
ftps1.Active:=true;
end;

клиент:

object IdFTP1: TIdFTP
MaxLineAction = maSplit
ReadTimeout = 0
Host = '127.0.0.1'
OnConnected = IdFTP1Connected
Passive = True
Password = '123456'
Username = 'Proba'
ProxySettings.ProxyType = fpcmNone
ProxySettings.Port = 0
Left = 95
Top = 20
end
object IdAntiFreeze1: TIdAntiFreeze
Left = 160
Top = 25
end

procedure TForm1.Button1Click(Sender: TObject);
begin
idftp1.Connect();
end;

procedure TForm1.Button2Click(Sender: TObject);
var s:tmemorystream;
begin
idftp1.WriteLn('proba_send_file');
s:=tmemorystream.Create;
idftp1.ReadStream(s);
s.SaveToFile('c:\321.txt');
s.Free;
end;

Отговор
в отговор на Barni #2

Re: FTP грешка?

Здравей Barni, преди време имах същия проблем, но така и остана нерешен. Така че много ще се радвам да видя какво е мнението на някой, който знае за какво става въпрос.

Отговор
в отговор на aнoнимeн #3

Re: FTP грешка?

ето на този адрес: [линк] е обяснен смисъла на тази грешка.

Отговор
в отговор на Barni #4

Re: FTP грешка?

Барни, така както си го направил няма да стане.
От страна на клиента:
1. TIdFTP->Connect();
2. TIdFTP->ChangeDir(); // евентуално - ако не си си сигрен, коя е тек. дир
3. TIdFTP->List(); // ако не си сигурен, че файла който искаш да теглиш го има
4. TIdFTP->Get(); // получаване на файла. Даваш като параметри името на файла на сървъра и с какво име да се запази на клиентското ПС.
5. TIdFTP->Disconnect();

Не мога да разбера защо ти е ти да пишеш кода за сървъра ? На всяко Win PC можеш да си пуснеш Personal Web server или IIS, който включва и FTP сървър. За XP Home Edition съм сигурен, че нямаше, за Millenium Edition май също нямаше уеб/фтп сървър, но не съм сигурен. Но каквато и ОС да ползваш винаги
можеш да си инсталираш Аpache сървър който има и FTP сървър.
Но ако все пак държиш ти да си направиш FTP сървър (само !) защо не използваш Trivial FTP клиента и сървъра на Инди ?

Отговор