Witajcie. Sprawa wyglada tak. Napisalem prostego klienta FTP wykorzystujac oczywiscie pakiet INDY.
No i jakos to dziala ale problem pojawia sie np kiedy podczas polaczenia z serwerm FTP ten wylacza sie a moj klient proboje zakonczyc polaczenie. Dostaje wtedy komunikat "Connection closed gracefully" ktorego nie chce natomiast chce zeby klient podja jakies dzialanie. Doszedlem do tego jak to zrobic ale nadal nie moge zakonczyc polaczenia tak zebym mogl ponownie sie polaczyc z serwerem FTP. Nie wiem czy dobrze to wyjasnilem. Ponizej czesc kodu odpowiedzialna tylko za polaczenie i rozlaczenie z FTPem.
procedure TForm1.IdFTP1Status(ASender: TObject; const AStatus: TIdStatus;
const AStatusText: String);
begin
Memo1.Lines.Add(AStatusText);
end;
procedure TForm1.PolaczClick(Sender: TObject);
begin
try
if not IdFTP1.Connected then IdFTP1.Connect;
except
on E : Exception do
if E is EIdConnClosedGracefully then
begin
Memo1.Lines.Add('Cos tam');
end else if E is EIdSocketError then
begin
Memo1.Lines.Add('Brak polaczenia za FTP');
end else if E is EIdReplyRFCError then
begin
Memo1.Lines.Add('Brak odpowiedzi z serwera');
end else
raise
end
end;
procedure TForm1.RozlaczClick(Sender: TObject);
begin
try
if IdFTP1.Connected then IdFTP1.Disconnect;
except
on E : Exception do
if E is EIdConnClosedGracefully then
begin
Memo1.Lines.Add('Cos tam');
if IdFTP1.Connected then
begin
Memo1.Lines.Add('Nadal jest podlaczony');
end;
end else if E is EIdSocketError then
begin
Memo1.Lines.Add('Brak polaczenia za FTP');
end else if E is EIdReplyRFCError then
begin
Memo1.Lines.Add('Brak odpowiedzi z serwera');
end else
raise
end
end;