2

enterprisedt Java ftp フレームワークを使用して、ftp サーバーから切断できません。

FileTransferClient オブジェクトで disconnect() を呼び出しても、エラーが発生することはありません。

サーバーに接続してから切断する以外は、何もしません。

        // create client
        log.info("Creating FTP client");
        ftp = new FileTransferClient();

        // set remote host
        log.info("Setting remote host");
        ftp.setRemoteHost(host);
        ftp.setUserName(username);
        ftp.setPassword(password);

        // connect to the server
        log.info("Connecting to server " + host);
        ftp.connect();
        log.info("Connected and logged in to server " + host);

        // Shut down client
        log.info("Quitting client");
        ftp.disconnect();

        log.info("Example complete");

これを実行すると、ログに次のように表示されます。

INFO [test] 28 maj 2010 16:57:20.216 : Creating FTP client
INFO [test] 28 maj 2010 16:57:20.263 : Setting remote host
INFO [test] 28 maj 2010 16:57:20.263 : Connecting to server x
INFO [test] 28 maj 2010 16:57:20.979 : Connected and logged in to server x
INFO [test] 28 maj 2010 16:57:20.979 : Quitting client
ERROR [FTPControlSocket] 28 maj 2010 16:57:21.026 : Read failed ('' read so far)

そしてスタックトレース:

com.enterprisedt.net.ftp.ControlChannelIOException: Connection reset
at com.enterprisedt.net.ftp.FTPControlSocket.readLine(FTPControlSocket.java:1029)
at com.enterprisedt.net.ftp.FTPControlSocket.readReply(FTPControlSocket.java:1089)
at com.enterprisedt.net.ftp.FTPControlSocket.sendCommand(FTPControlSocket.java:988)
at com.enterprisedt.net.ftp.FTPClient.quit(FTPClient.java:4044)
at com.enterprisedt.net.ftp.FileTransferClient.disconnect(FileTransferClient.java:1034)
at test.main(test.java:46)

現在の作業ディレクトリ内のファイルのリストを取得するなど、問題なくサーバーに接続して何かを行うことができることに注意してください。しかし、なぜか切断できない!アクティブモードとパッシブモードの両方を使用してみました。

上記の例は、ちなみに独自の例からコピー/貼り付けしたものです。Google 検索を行っても、これに関連するものは何も見つかりません。そのため、この問題に関する提案や経験があれば幸いです。

4

1 に答える 1

0

でトレースを有効にしてみてください

com.enterprisedt.util.debug.Logger.setLevel(com.enterprisedt.util.debug.Level.DEBUG);

これにより、ライブラリとftpサーバー間の通信を監視できます。

コマンドラインクライアントを使用してftpサーバーへの接続を開いてみてください。接続してログインし、すべてが機能していることを確認します。次に、と入力しquot quitます。これにより、明示的なquitコマンドがftpサーバーに送信されます。221または226応答のいずれかを取得する必要があります。他のコードを取得した場合、または接続が閉じられたばかりの場合は、非準拠のFTPサーバーに直面しています。

disconnect(true)その場合は、正常にシャットダウンするのではなく、接続を閉じるだけで使用してみることもできます。

于 2010-05-28T16:22:49.800 に答える