私は it.sauronsoftware.ftp4j を使用して、ポート 21 でインターネット経由で FTP サーバーに接続しています。
HTTP プロキシ経由で接続しているので、HTTPTunnelConnector を使用しています。
問題なく FTP に接続してログインし、モードをパッシブに設定できます
現在、ファイル、LIST ファイル、またはデータ接続を必要とするその他のものをダウンロードしようとすると、FTP サーバーから「425 Can't open data connection」というメッセージが表示されます。それで、通常の 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 さようなら