大家遇到这样的情况吗? TIdFtp.Get 这一步出现死锁(15分)

  • 主题发起人 主题发起人 shuaikiller
  • 开始时间 开始时间
S

shuaikiller

Unregistered / Unconfirmed
GUEST, unregistred user!
程序如下:
procedure TFrmMain.FtpDownLoad(aURL, aFileName: String;bResume: Boolean);
var
FStream: TFileStream;
UserName, Password, aHost, aPort, aDir: String;
IdFtp: TIdFtp;
begin
if FileExists(aFileName) then
FStream := TFileStream.Create(aFileName, fmOpenWrite)
else
FStream := TFileStream.Create(aFileName, fmCreate);
IdFtp := TIdFtp.Create(nil);
try
GetFtpParams(aURL, UserName, Password, aHost, aPort, aDir);
try
if IdFtp.Connected then
IdFtp.Disconnect;
//重新连接
IdFtp.Username := UserName;
IdFtp.Password := Password;
IdFtp.Host := aHost;
IdFtp.Port := StrToInt(aPort);
IdFtp.Connect;
except
IdFtp.Disconnect;
Exit;
end;

IdFtp.ChangeDir(aDir);
if bResume then
begin
FStream.Position := FStream.Size;
IdFTP.Get(GetURLFileName(aURL), FStream, True);
end else
begin
IdFTP.Get(GetURLFileName(aURL), FStream, False);
end;

PostMessage(FrmMain.Handle,WM_SUCCED,0,0);
finally
FreeAndNil(FStream);
FreeAndNil(IdFtp);
end;
end;

调用:
FtpDownLoad('ftp://ftp2.tw.FreeBSD.org/pub/FreeBSD/README.TXT','d:/test.txt',false);
可是在FtpDownLoad运行到IdFTP.Get(GetURLFileName(aURL), FStream, True);
就死在这里不动了。
参考了http://www.kfdoc.com/delphibbs2005/297/2976621.htm的方法:
1:换成indy 10,
2:添加IdAntiFreeze1、IdIOHandlerStack1、IdConnectionIntercept1;
但还是不行。请问这样的问题有朋友出现过吗?该怎样解决?谢谢!
 
请高人解答一下,感激不尽!
 
大富翁的高手是不是都喝茶去了啊?
 
将indy换成 => 10.2.3就可以了。
结贴了。。。
 
文件名有连续的空格符?
 
接受答案了.
 
后退
顶部