0

apache commons net FTP クラスを使用して、プロキシを使用してネットワーク外にある Sterling commerce FTP ゲートウェイに接続し、ファイルをプルしています。プルするファイルの名前がわかっているため、ファイルをリストしません。以下の方法を使用して直接プルします。

boolean isTransferred = ftp.retrieveFile(remoteFileName, outputFile);

3 年前から機能しており、過去 2 週間から問題に直面しています。エラーは上記の行で発生し、

org.apache.commons.net.ftp.FTPConnectionClosedException: FTP 応答 421 を受信しました。サーバーが接続を閉じました。org.apache.commons.net.ftp.FTP.__getReply(FTP.java:347) org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:450) org.apache.commons.net.ftp. FTP.sendCommand(FTP.java:478) org.apache.commons.net.ftp.FTPClient. openDataConnection (FTPClient.java:476) org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1228)

過去 2 週間から断続的にこれらの問題に直面しており、根本的な原因が何であるかはわかりません。どちらの側も何も変わっていません。何が問題になる可能性がありますか?

ありがとう、ラヴィ

4

1 に答える 1

4

FTPClient はデフォルトで「アクティブ モード」を使用します。これは、FTP クライアントが FTP サーバーに接続するためにポートを開く必要があるため、問題があります。パッシブ モードを使用すると、この問題を回避できます。接続してログインしたら、FTP コードに次の行を追加します。

FTPClient ftp = new FTPClient();
// connect and login code here
ftp.enterLocalPassiveMode();

これで問題が解決するはずです。

于 2010-05-18T23:49:22.320 に答える