0

小更新: 如果它确实进一步连接,我会得到(继续调试信息):

200 PROT P OK, data channel will be secured.
CCC
200 CCC Context Enabled.
PASV
Exception:Could not parse response code.
Server Reply: ': command not understood.

我正在开发一个我无法控制服务器的项目。它需要是显式 SSL 连接并使用 Clear Command Channel。它到达 execCCC 命令,然后停止,

FTPSClient pftps = new FTPSClient(false);
pftps.addProtocolCommandListener(new PrintCommandListener(System.out));
pftps.setControlKeepAliveTimeout(300);
try {
    pftps.setAuthValue("SSL");
    pftps.setUseEPSVwithIPv4(true);
    pftps.connect(result.getPershingHost(), 21);
    pftps.enterLocalPassiveMode();
    pftps.user(result.getPershingLoginId());
    pftps.pass(result.getPershingLoginPass());
    pftps.execPBSZ(0L);
    pftps.execPROT("P");
    pftps.execCCC();
    FTPFile[] files = pftps.listFiles();
    for (FTPFile file : files) {
        System.out.println(file);
    }
...

调试:

AUTH SSL
234 AUTH TLS-P/SSL OK.
USER myuser
331 Password required for myuser.
PASS password
230 Connect:Enterprise UNIX login ok, access restrictions apply.
PBSZ 0
200 PBSZ 0 OK.
PROT P
200 PROT P OK, data channel will be secured.
CCC
200 CCC Context Enabled.

有几次我得到一个错误,比如解析 SYST 命令响应时出错,但 9/10 次,它只是在这里停滞不前。我正在使用 commons-net 3.3,我认为它修复了之前关于使用 CCC 的错误。另外,需要注意的是,我试图将 execCCC 放在 PROT/PBSZ 之前,即使在 CCC 命令上它也会挂起。我会很感激任何帮助,因为这让我很烦。

4

0 回答 0