问题如下:现通过本机(如ip分配:172.23.250.2)
ftp所在服务器ip 172.23.0.10
本机无法直接ping通ftp服务器,本机与ftp服务器之间有安全平台,如果使用tracert可以看到环路
安全平台给了我一个ip为2.0.0.1,并为我开放了一个端口20021。
通过ftp被动机制,ftp服务器端已经绑定了20001~20005端口供我使用使用org.apache.commons.net.ftp.FTPClient以及sun包下的FTPclient
都可以登录,但都无法获取ftp服务器的文件路径,返回的操作码都是: 425 无法打开数据连接 
因此也就无法传文件了,换句话说就是压根除了登录 我就啥事都做不了,后来查看ftp服务器上各类权限都已经给我打开。
后查阅了org.apache.commons.net.ftp包下的ftpclient源码,发现ftp被动模式下,客户端发一个pasv命令过去,ftp服务器会给客户端开一个端口(20001~20005之间),我这边客户端也可以拿到这个端口,但是在new socket(ip,port)中,源码里面设置的ip却是ftp服务器的ip,因本身客户端的机器无法直接ping通ftp服务器,所以问题程序在这一步就挂了。我也想过把ftpclient重写,但是貌似各种工作量太大了。。
(ftp服务器以及中间平台的各类设置都是没有问题的,因为在客户端使用leapftp工具可以进行文件上传!)尝试了很多办法 都木有解决。
求有搞过ftp的高人指点迷津啊···

解决方案 »

  1.   


    问题就是找不到425造成的原因、因为目前只有登录可用 其他都不行,
    同时 使用ie来访问这个ftp正确登录之后会提示超时、
      

  2.   

    http://geekswithblogs.net/Lance/archive/2008/01/24/ftp-error-425-quotcant-open-data-connection.quot.aspx
      

  3.   

    这里面都找过了 没找到原因,下了ftpclient的源码,逐步跟踪发现里面有些问题,个人觉得可能这个ftpclient不支持双ip操作、不过很幸运的,自己操作文件流配合命令把问题解决了、只是目前不支持过大的文件……
      

  4.   

    不是很清楚是ftpclient本身問題(覺得可能性還是比較小的)還是什麽其它原因造成的
    或者可以換個:ftp4j
    http://www.sauronsoftware.it/projects/ftp4j/