私はApache FTPSクライアントを作成しています(リモートサーバーはプレーンなFTPを許可しないため)。問題なくファイルを接続および削除できますが、retrieveFile()またはretrieveFileStream()を使用すると、ファイルはハングします。FTPSClient retrievefile()hang
何らかの理由で、非常に小さなファイルが(5792バイトまで)転送を行うが、何か他のものは、次のPrintCommandListener出力が得られます。
実行:
220 ----------ようこそPure-FTPd [privsep] [TLS] ----------
220 - あなたはユーザー番号2の50を使用できます。
220-現地時間は19:42になりました。サーバーポート:21.
220-これはプライベートシステムです。匿名ログインはありません。
このサーバーでは、220-IPv6接続も可能です。
220 15分を過ぎると切断されます。
AUTH TLS
234 AUTH TLS OK。
ユーザー
331ユーザーOKです。パスワードが必要です
PASS
230 OKです。 (||| 53360 |)
RETR test.txtの
150-受け付けたデータ接続
150 7.3現在の制限されたディレクトリが
200 TYPEはASCIIになりました
EPSV
229拡張パッシブモードOK/
TYPEですここで
をダウンロードするキロバイトのコードです:
try {
FTPSClient ftpClient = new FTPSClient("tls",false);
ftpClient.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out)));
ftpClient.connect(host, port);
int reply = ftpClient.getReplyCode();
if (FTPReply.isPositiveCompletion(reply)) {
ftpClient.enterLocalPassiveMode();
ftpClient.login(username, password);
ftpClient.enterLocalPassiveMode();
FileOutputStream outputStream = new FileOutputStream(tempfile);
ftpClient.setFileType(FTPClient.ASCII_FILE_TYPE);
ftpClient.retrieveFile("test.txt", outputStream);
outputStream.close();
ftpClient.logout();
ftpClient.disconnect();
}
} catch (IOException ioe) {
System.out.println("FTP client received network error");
}
すべてのアイデアを大歓迎します。
コードを正しくフォーマットしてください。エディタの上に用意されているツールを使用するだけで、ポイントとクリックの書式をマークすることができます。 –