IdFTP1.List(Strs);时一直处于等待状态。500分 ( 积分: 200 )

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

Shd

Unregistered / Unconfirmed
GUEST, unregistred user!
1.开发环境:D7+indy9.00.10+Windows2003;命名为A机器
测试环境:Windows2003;命名为B机器
2.问题描述:我参照Delphi的例子写了FTP服务器和客户端。下面是部署运行情况:

FTP服务器 FTP客户端 IdFTP1.List(Strs)结果
A机器 B机器 OK
A机器 A机器 OK
B机器 A机器 OK
B机器 B机器 一直处于等待状态

上下载文件都没问题。IdFTP1.Passive := True;
请不要让我重装机器,因为有一台C机器也像B一样。还有一台机器像A一样是可用的。
我已经用Google搜索了一下,有一些相同情况,但是没有解决办法。大富翁的搜索暂时用不了,可能是好久不来了,已经不会用了。

请大家帮忙分析一下问题出在哪?解决问题后再给300分。
 
不好意思,自己往前提提。请各位高人给看看,毛病到底出在哪。
 
没遇到过楼主说的情况,而且楼主的介绍中虽然详细说了系统配置什么的,但是并没有介绍网络连接方式(局域网?因特网?)也没有说明FTP服务端的设置,更没有介绍有无防火墙规则情况等。实在是信息太少,无法判断。
 
1.局域网,无防火墙。
2.FTP服务端设置,应该怎样设置?我就是用的D7带的FtpServer例子修改的。
IdFTPServer1.DefaultPort := 30;
IdFTPServer1.AllowAnonymousLogin := False;
IdFTPServer1.EmulateSystem := ftpsUNIX;
IdFTPServer1.Greeting.NumericCode := 220;
with IdFTPServer1.CommandHandlers.add do
begin
Command := 'XCRC';
OnCommand := IdFTPServer1CommandXCRC;
end;
IdFTPServer1.Active := true;
 
楼主的代码中,除了DefaultPort := 30;这句和普通用到的FTP连接端口不一样外,倒并没看出什么不同来。因为我对Indy9不是很熟悉,所以下面的建议仅供参考,未必能解决问题。

1.尝试使用IdFTPServer.Bindings熟悉,增加对主机IP和端口的监控,特别要注意,如果你的机器有两块网卡的时候,更应该对Bindings做处理。
2.如果条件允许,试着调试一下服务器端和客户端,看看他们俩到底是那边执行命令的时候挂死了。
3.为了验证双方通讯的可靠性,建议用Sniffer工具探查下双方通讯的具体数据包,分析下到底是到那一步出现问题的。

最后再对症下药可能比较容易些。
 
谢谢zqw0117,我先试试。
 
我试过很多ftp组件的,包括Indy和NMFTP还有网上下载的,没有一个不出问题的,不是莫名其妙挂起,就是会发生错误,最可靠的是用API
 
后退
顶部