3

私は 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 さようなら

4

0 に答える 0