3

我正在使用 it.sauronsoftware.ftp4j 通过 Internet 在端口 21 上连接到 FTP 服务器。

我通过 HTTP 代理进行连接,所以我使用的是 HTTPTunnelConnector。

我能够连接并登录到 FTP 并将模式设置为被动没有问题

现在,当我尝试下载文件、LIST 文件或任何其他需要数据连接的文件时,我从 FTP 服务器收到“425 无法打开数据连接”。所以,我能够建立常规的 FTP 连接,但是数据连接是个问题。

现在,让我感到困惑的是,有 10-15% 的时间,数据连接实际上是通过的,而且我能够下载文件!当我立即重新运行我的程序时,它再次失败并显示 425 错误代码,并继续这样做,直到它再次神奇地工作。

这让我认为这可能是一个端口问题——数据连接被一个阻塞的端口停止,有时幸运地找到一个可以连接的开放端口——但这是一个没有根据的猜测。

有没有人经历过类似的事情?我的猜测是否是 HTTP 代理中的端口问题,或者可能是 FTP 服务器前面的防火墙中的端口问题,听起来正确吗?

编辑:我将 FTPCommunicationListener 附加到客户端。这是通信日志(检查 IP 地址、用户名和密码)

Connected, logging in
Sent: USER username
Received: 331 Password required for username
Sent: PASS password
Received: 230 Logged on
Sent: FEAT
Received: 211-Features:
Received:  MDTM
Received:  REST STREAM
Received:  SIZE
Received:  MLST type*;size*;modify*;
Received:  MLSD
Received:  AUTH SSL
Received:  AUTH TLS
Received:  PROT
Received:  PBSZ
Received:  UTF8
Received:  CLNT
Received:  MFMT
Received: 211 End
Sent: OPTS UTF8 ON
Received: 200 UTF8 mode enabled
Sent: TYPE A
Received: 200 Type set to A
Sent: PASV
Received: 227 Entering Passive Mode (xx,xx,xx,xx,xx,xx)
Sent: REST 0
Received: 350 Rest supported. Restarting at 0
Sent: RETR /directory/file.csv
Received: 425 Can't open data connection.
it.sauronsoftware.ftp4j.FTPException [code=425, message= Can't open data connection.]
    at it.sauronsoftware.ftp4j.FTPClient.download(FTPClient.java:3330)
    at it.sauronsoftware.ftp4j.FTPClient.download(FTPClient.java:3213)
    at it.sauronsoftware.ftp4j.FTPClient.download(FTPClient.java:3078)
    at FtpTest.getFileOutputStream(FtpTest.java:131)
    at FtpTest.main(FtpTest.java:18)

发送:QUIT 接收:221 再见

4

0 回答 0