为何用InternetConnect建立FTP连接返回的句柄值为nil? ( 积分: 200 )

  • 主题发起人 主题发起人 goldseal94
  • 开始时间 开始时间
G

goldseal94

Unregistered / Unconfirmed
GUEST, unregistred user!
TMyFTP = Record
FtpHandle : HInternet;
InetHandle : HInternet;
end;

function FTPLogin(var FMyFTP : TMyFTP) : Boolean;
begin
Result := False;
with FMyFTP do
begin
InternetCloseHandle(FtpHandle);
InternetCloseHandle(InetHandle);
FtpHandle:=nil;
InetHandle:=nil;
InetHandle := InternetOpen(PChar('MyFTP'), 0, nil, nil, 0);
InternetSetStatusCallback(InetHandle, nil);
FtpHandle := InternetConnect(InetHandle, PChar(gFTPHost), gFTPPort, PChar(gFTPUser),
PChar(gFTPPassword), INTERNET_SERVICE_FTP, 0, 255);
if Assigned(FtpHandle) then
Result := True
else
begin
CloseFTP(FMyFTP);
ErrorLog('FTPLogin','Login failed');
end;
end;
end;

这是一个数据传输程序中的FTP登录的源码, 原来是用IdFTP控件,但在实际使用过程中出现了一些问题,如Socket 11004 错误,所以改用了API的方法,但现在又出现了调用InternetConnect后,FtpHandle仍为nil的情况,但用netstat命令查看已建立FTP建接,本人用同样的方法写一个小程序又没有问题,我又将程序拿到家里的机器上调试也没有此问题,百思不解,请问各位高手,这究竟是何原因???
 
TMyFTP = Record
FtpHandle : HInternet;
InetHandle : HInternet;
end;

function FTPLogin(var FMyFTP : TMyFTP) : Boolean;
begin
Result := False;
with FMyFTP do
begin
InternetCloseHandle(FtpHandle);
InternetCloseHandle(InetHandle);
FtpHandle:=nil;
InetHandle:=nil;
InetHandle := InternetOpen(PChar('MyFTP'), 0, nil, nil, 0);
InternetSetStatusCallback(InetHandle, nil);
FtpHandle := InternetConnect(InetHandle, PChar(gFTPHost), gFTPPort, PChar(gFTPUser),
PChar(gFTPPassword), INTERNET_SERVICE_FTP, 0, 255);
if Assigned(FtpHandle) then
Result := True
else
begin
CloseFTP(FMyFTP);
ErrorLog('FTPLogin','Login failed');
end;
end;
end;

这是一个数据传输程序中的FTP登录的源码, 原来是用IdFTP控件,但在实际使用过程中出现了一些问题,如Socket 11004 错误,所以改用了API的方法,但现在又出现了调用InternetConnect后,FtpHandle仍为nil的情况,但用netstat命令查看已建立FTP建接,本人用同样的方法写一个小程序又没有问题,我又将程序拿到家里的机器上调试也没有此问题,百思不解,请问各位高手,这究竟是何原因???
 
后退
顶部