需要满足:
1、 A公司内部网访问服务器
2、 A公司服务器上网与公司分开
3、 公网IP: 222.222.222.222已经映射到A公司服务器(大楼分配ip 10.0.0.13)
4、 写字楼路由器已映射端口:10460 – 10470 到A公司服务器
5、 A公司服务器开放端口:全开
6、 A公司路由器开放端口:全开现在的问题:
我们在 A公司服务器上架设了一个FTP服务器,Ftp端口为 10460,采用被动模式,pasv 端口指定为 10461-10470. 现在我们通过FTP工具(如 CuteFtp等),能登陆FTP服务器,并且上传下载文件,通过Delphi程序则无法上传下载文件,查看 服务器日志,发现ftp 用户能够登陆ftp服务器,但是在建立数据链接时失败。
我们的Delphi程序在别的用户处工作正常,都是映射了 10460-10470端口就能正常使用。
附FTP服务器日志:用我们程序连接的,失败的日志
220 Serv-U FTP Server v6.4 for WinSock ready...
USER lzl
331 User name okay, need password.
PASS xxxxx
230 User logged in, proceed.
FEAT
211-Extension supported
CLNT
MDTM
MDTM YYYYMMDDHHMMSS[+-TZ];filename
SIZE
SITE PSWD;EXEC;SET;INDEX;ZONE;CHMOD;MSG
REST STREAM
XCRC filename;start;end
MODE Z
MLST Type*;Size*;Create;Modify*;Win32.ea*;
211 End
TYPE I
200 Type set to I.
SYST
215 UNIX Type: L8
SITE ZONE
210 UTC+480
CWD 2010/10/
250 Directory changed to /2010/10
PORT 192,168,10,199,16,85
200 PORT Command successful.
STOR {865EAFBC-5591-47F1-AD41-4E1CEF53F5E7}.rar
150 Opening BINARY mode data connection for {865EAFBC-5591-47F1-AD41-4E1CEF53F5E7}.rar.
425 Cannot open data connection.用CuteFtp下载,成功的日志
220 Serv-U FTP Server v6.4 for WinSock ready...
USER lzl
331 User name okay, need password.
PASS xxxxx
230 User logged in, proceed.
FEAT
211-Extension supported
CLNT
MDTM
MDTM YYYYMMDDHHMMSS[+-TZ];filename
SIZE
SITE PSWD;EXEC;SET;INDEX;ZONE;CHMOD;MSG
REST STREAM
XCRC filename;start;end
MODE Z
MLST Type*;Size*;Create;Modify*;Win32.ea*;
211 End
TYPE I
200 Type set to I.
SYST
215 UNIX Type: L8
SITE ZONE
210 UTC+480
CWD /2010/10/
250 Directory changed to /2010/10
SIZE {5E76CC6F-6F4B-492A-89A8-58FD2876A5DE}.rar
213 159644
PORT 10,0,0,13,11,229
200 PORT Command successful.
RETR {5E76CC6F-6F4B-492A-89A8-58FD2876A5DE}.rar
150 Opening BINARY mode data connection for {5E76CC6F-6F4B-492A-89A8-58FD2876A5DE}.rar (159644 Bytes).
226 Transfer complete.哪位兄弟熟悉这个,帮忙看看,谢谢。
1、 A公司内部网访问服务器
2、 A公司服务器上网与公司分开
3、 公网IP: 222.222.222.222已经映射到A公司服务器(大楼分配ip 10.0.0.13)
4、 写字楼路由器已映射端口:10460 – 10470 到A公司服务器
5、 A公司服务器开放端口:全开
6、 A公司路由器开放端口:全开现在的问题:
我们在 A公司服务器上架设了一个FTP服务器,Ftp端口为 10460,采用被动模式,pasv 端口指定为 10461-10470. 现在我们通过FTP工具(如 CuteFtp等),能登陆FTP服务器,并且上传下载文件,通过Delphi程序则无法上传下载文件,查看 服务器日志,发现ftp 用户能够登陆ftp服务器,但是在建立数据链接时失败。
我们的Delphi程序在别的用户处工作正常,都是映射了 10460-10470端口就能正常使用。
附FTP服务器日志:用我们程序连接的,失败的日志
220 Serv-U FTP Server v6.4 for WinSock ready...
USER lzl
331 User name okay, need password.
PASS xxxxx
230 User logged in, proceed.
FEAT
211-Extension supported
CLNT
MDTM
MDTM YYYYMMDDHHMMSS[+-TZ];filename
SIZE
SITE PSWD;EXEC;SET;INDEX;ZONE;CHMOD;MSG
REST STREAM
XCRC filename;start;end
MODE Z
MLST Type*;Size*;Create;Modify*;Win32.ea*;
211 End
TYPE I
200 Type set to I.
SYST
215 UNIX Type: L8
SITE ZONE
210 UTC+480
CWD 2010/10/
250 Directory changed to /2010/10
PORT 192,168,10,199,16,85
200 PORT Command successful.
STOR {865EAFBC-5591-47F1-AD41-4E1CEF53F5E7}.rar
150 Opening BINARY mode data connection for {865EAFBC-5591-47F1-AD41-4E1CEF53F5E7}.rar.
425 Cannot open data connection.用CuteFtp下载,成功的日志
220 Serv-U FTP Server v6.4 for WinSock ready...
USER lzl
331 User name okay, need password.
PASS xxxxx
230 User logged in, proceed.
FEAT
211-Extension supported
CLNT
MDTM
MDTM YYYYMMDDHHMMSS[+-TZ];filename
SIZE
SITE PSWD;EXEC;SET;INDEX;ZONE;CHMOD;MSG
REST STREAM
XCRC filename;start;end
MODE Z
MLST Type*;Size*;Create;Modify*;Win32.ea*;
211 End
TYPE I
200 Type set to I.
SYST
215 UNIX Type: L8
SITE ZONE
210 UTC+480
CWD /2010/10/
250 Directory changed to /2010/10
SIZE {5E76CC6F-6F4B-492A-89A8-58FD2876A5DE}.rar
213 159644
PORT 10,0,0,13,11,229
200 PORT Command successful.
RETR {5E76CC6F-6F4B-492A-89A8-58FD2876A5DE}.rar
150 Opening BINARY mode data connection for {5E76CC6F-6F4B-492A-89A8-58FD2876A5DE}.rar (159644 Bytes).
226 Transfer complete.哪位兄弟熟悉这个,帮忙看看,谢谢。
解决方案 »
- 想问问用DELPHI开发的都是哪个地方的人呵~
- 是不是GOOGLE又被封了?
- 动态创建的VCL控件如何改变属性?
- XMLDocument与XMLDOMDocument的区别
- ★★请大家参与讨论数据库数据库的两层,三层,b/s开发的优缺点★★
- 我能不能用个i变量来控制label
- 如何把InterBase里面的内容备份到DBF文件中(或者是Excel文件中)?
- Case 语句要怎么用??
- 新年新气象,哈哈,我到4级了!
- 改变图片的背景色
- 死活调用不成功帮忙看下,说不定改天你就遇到!
- DELPHI2010的IDHTTP控件与DELPHI7的IDHTTP控件有什么不一样呀?GET事件DELPHI7正常,DELPHI2010就有问题!
fscnt兄,我是直接调用的 indy
IdFTP1.Host := g_FtpHost;
IdFTP1.Port := StrToInt(g_FtpPort) ;
IdFTP1.Username := g_FtpUser;
IdFTP1.Password := g_FtpPass;
IdFTP1.Connect;
IdFTP1.Get(sFileSrc, sFileDes, True);
procedure TIdFTP.Put(const ASource: TStream; const ADestFile: string = '';
const AAppend: boolean = false);
begin
if length(ADestFile) = 0 then begin
InternalPut('STOU ' + ADestFile, ASource); {Do not localize}
end else if AAppend then begin
InternalPut('APPE ' + ADestFile, ASource, false); {Do not localize}
end else begin
InternalPut('STOR ' + ADestFile, ASource); {Do not localize}
end;
end;
220 Serv-U FTP Server v6.4 for WinSock ready...
USER lzl
331 User name okay, need password.
PASS xxxxx
230 User logged in, proceed.
FEAT
211-Extension supported
CLNT
MDTM
MDTM YYYYMMDDHHMMSS[+-TZ];filename
SIZE
SITE PSWD;EXEC;SET;INDEX;ZONE;CHMOD;MSG
REST STREAM
XCRC filename;start;end
MODE Z
MLST Type*;Size*;Create;Modify*;Win32.ea*;
211 End
TYPE I
200 Type set to I.
SYST
215 UNIX Type: L8
SITE ZONE
210 UTC+480
CWD /2010/10/
250 Directory changed to /2010/10
SIZE {3B29091A-B279-424A-A070-22EF382BED7E}.rar
213 542075
PORT 192,168,10,199,5,138
200 PORT Command successful.
RETR {3B29091A-B279-424A-A070-22EF382BED7E}.rar
150 Opening BINARY mode data connection for {3B29091A-B279-424A-A070-22EF382BED7E}.rar (542075 Bytes).
425 Cannot open data connection.这是提交的日志
220 Serv-U FTP Server v6.4 for WinSock ready...
USER lzl
331 User name okay, need password.
PASS xxxxx
230 User logged in, proceed.
FEAT
211-Extension supported
CLNT
MDTM
MDTM YYYYMMDDHHMMSS[+-TZ];filename
SIZE
SITE PSWD;EXEC;SET;INDEX;ZONE;CHMOD;MSG
REST STREAM
XCRC filename;start;end
MODE Z
MLST Type*;Size*;Create;Modify*;Win32.ea*;
211 End
TYPE I
200 Type set to I.
SYST
215 UNIX Type: L8
SITE ZONE
210 UTC+480
CWD 2010/10/
250 Directory changed to /2010/10
PORT 192,168,10,199,5,166
200 PORT Command successful.
STOR {85582322-BA36-4DD5-B806-0D09A83ACE24}.rar
150 Opening BINARY mode data connection for {85582322-BA36-4DD5-B806-0D09A83ACE24}.rar.
425 Cannot open data connection.
你的程序里IP怎以是192,168,10,199呢
这个是我在我公司的机器上运行程序,我机器的内网ip是 192,168,10,199我猜是不是ftp要取客户机所在机器的ip我现在有5个客户,都是用同样的服务端,同样的端口映射,就这一个客户死活连不上,别的客户都很正常
但是内网用户依然不能连ftp,很奇怪
日志如下:第一次连接,下载文件失败
CWD /2010/10/
250 Directory changed to /2010/10
SIZE {C84B3412-EE73-4EDD-B48E-DF0BABBF8581}.rar
213 134784
PASV
227 Entering Passive Mode (10,0,0,13,40,29)
第二次连接,上传失败
PASV
227 Entering Passive Mode (10,0,0,13,40,30)
STOR {C3CADF04-B0EA-44EF-B755-A5DB95F40FDA}.rar
错误提示很明显检查一下这个{5E76CC6F-6F4B-492A-89A8-58FD2876A5DE}.rar 文件,提示不能打开数据
AFtp.Passive := True.明确初始化为被动模式,一切就ok了。仅供参考。