1

Apache Mina FTPServer を使用しています。ドキュメントに記載されているように、DefaultFtpletクラスを拡張しています。などのドキュメントに記載されているいくつかのイベントにプリント (SOP) を入れていますonConnectが、すべて正常に動作しています。

ここで、コマンドを制限しDELEたいので、ドキュメントに従ってメソッドをオーバーライドしましたonDeleteStartが、クライアントがハングし、メッセージなしで切断されます。

このようなシナリオに関するより具体的なドキュメントを見つけることができなかったため、次のコードは次のとおりです。

@Override
public FtpletResult onDeleteStart(FtpSession session, FtpRequest request) throws FtpException, IOException {
    System.out.println("\n\n\nonDeleteStart\n\n\n");

    FtpReply reply = new FtpReply() {

        @Override
        public String getMessage() {
            return "Deletion not supported";
        }

        @Override
        public int getCode() {
            return FtpReply.REPLY_450_REQUESTED_FILE_ACTION_NOT_TAKEN;
        }
    };
    session.write(reply); // Not sure if this is the right way!

    return FtpletResult.SKIP;
}

ここで何が欠けているのか教えてください。それともこれが正しい方法ですか?

クライアント (ftpコマンド ライン、およびWinSCP) が からメッセージを取得せずgetMessage()、ハングして後で切断する

4

1 に答える 1

0

DefaultFtpReplyを作成する代わりに使用できますnew FtpReply()

FtpReply reply = new DefaultFtpReply(FtpReply.REPLY_450_REQUESTED_FILE_ACTION_NOT_TAKEN, 
"Deletion not supported");
session.write(reply );
于 2015-06-13T01:14:14.883 に答える