Форум: "Сети";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];
Внизftp сервер Найти похожие ветки
← →
Temp_Yuriy (2007-07-04 21:47) [0]Здравствуйте коллеги. Столкнулся с непонятным для меня моментом. Есть код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
try
NMFTP1.Host :=IP;
NMFTP1.Port :=StrToInt(Port);
NMFTP1.UserID :=Login;
NMFTP1.Password :=Password;
Zapuski :=Zapuski + 1;
NMFTP1.Connect;
for i :=0 to StrToInt(KolvoDir) - 1 do
begin
NMFTP1.ChangeDir(MassivDir[i]);
end;
NMFTP1.Upload(PatchFileSystem, NameOnFTP);
NMFTP1.Disconnect;
except
Label3.Caption :=IntToStr (Zapuski);
Label4.Caption :=IntToStr (Uspehi);
Exit;
end;
Uspehi :=Uspehi + 1;
Label3.Caption :=IntToStr (Zapuski);
Label4.Caption :=IntToStr (Uspehi);
end;
Это загрузка файла на ftp сервер. Программа должна работать круглосуточно. Программа работает на ура около двух-трёх суток и слетает. Быть может она в какой то момент времени не может соедениться с ftp сервером и срабатывает блок try-except. Может можно и нужно там писать кусочек кода NMFTP1.Free? Может кто сталкивался?
← →
Temp_Yuriy (2007-07-05 07:31) [1]Ура. Всю ночь бился. Заработало как надо. Вот что у меня получилось:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
try
try
ftp := TNMFTP.Create(Form1);
ftp.Port := 21;
ftp.Host := IP;
ftp.UserID :=Login;
ftp.Password :=Password;
ftp.OnConnect :=RialConnect;
ftp.Connect;
except
Exit;
end;
finally
ftp.Free;
end;
end;
procedure TForm1.RialConnect(Sender : TObject);
begin
for i :=0 to StrToInt(KolvoDir) - 1 do
begin
ftp.ChangeDir(MassivDir[i]);
Application.ProcessMessages;
end;
ftp.Upload(PatchFileSystem, NameOnFTP);
ftp.Disconnect;
end;
← →
umbra © (2007-07-05 11:12) [2]
> Программа работает на ура около двух-трёх суток и слетает.
в первом варианте в случае обрыва соединения не происходил дисконнект, т.е. сокет не освобождался. После этого снова начиналось новое соединение. И т.д. Дня через три кончались доступные сокеты :)
← →
Temp_Yuriy © (2007-07-13 20:09) [3]Сделал ещё лучше:
procedure TForm1.RialConnect(Sender : TObject);
begin
try
try
for i :=0 to StrToInt(KolvoDir) - 1 do
begin
ftp.ChangeDir(MassivDir[i]);
Application.ProcessMessages;
end;
ftp.Upload(PatchFileSystem, NameOnFTP);
Uspehi :=Uspehi + 1;
Label4.Caption := IntToStr (Uspehi);
ftp.Disconnect;
except
Exit;
end;
finally
ftp.Disconnect;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
U : integer;
begin
for U :=0 to ComponentCount - 1 do
if Components[U] is TNMFTP then TNMFTP(Components[U]).Free;
Zapuski :=Zapuski+1;
Label3.Caption :=IntToStr(Zapuski);
try
try
ftp := TNMFTP.Create(Form1);
ftp.Port :=21;
ftp.Host := IP;
ftp.UserID :=Login;
ftp.Password :=Password;
ftp.OnConnect :=RialConnect;
ftp.Connect;
except
Exit;
end;
finally
ftp.Disconnect;
end;
end;
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.006 c