有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在连接Apache FTPSClient后记录“220服务器就绪”消息

我正在使用ApacheCommonsNet编写一个简单的FTPS客户端。一切正常,但没有记录初始的“服务器就绪”消息。我调用connect(),然后立即执行getReplyString(),它记录的所有日志都是234 Enabling TLS, awaiting negotiations,即使我知道服务器在连接后正在发送消息:

220 FTPS (Version Fri Jan 22 19:49:50 2016) server ready.

我甚至使用了getReplyStrings()来查看是否有多条消息,但它仍然只显示一条234 Enabling TLS, awaiting negotiations消息。我有一种感觉,这是因为这是对AUTH TLS命令的唯一回复,该命令在我连接时自动发出(显式TLS)

我做了一个黑客程序,它刮取ProtocolCommandListener输出并以这种方式获取消息,但我宁愿正确地执行它。我觉得我错过了一些简单的事情。有人能帮忙吗

代码:

FTPSClient ftpsclient = new FTPSClient("TLSv1.2");

// my hacked attempt to get the message
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos,true,"utf-8");
ftpsclient.addProtocolCommandListener(new PrintCommandListener(ps, true));

logMessage("Connecting to FTP-SSL server [" + HOST + "] on port [" + PORT + "]...", 1);
ftpsclient.connect(HOST, PORT);
_logger.debug("Output: "+ baos.toString()); 
if (!FTPReply.isPositiveCompletion(ftpsclient.getReplyCode())) {
    throw new Exception("Failed to connect to [" + HOST + "]\n" + ftpsclient.getReplyString());
}
logMessage(ftpsclient.getReplyString(), 1);

输出:

[Jan 22, 16:49:50] INFO logMessage() - Connecting to FTP-SSL server [HOST] on port [PORT]...
[Jan 22, 16:49:55] DEBUG - Output: 220 FTPS (Version  Fri Jan 22 19:49:50 2016) server ready.
AUTH TLS
234 Enabling TLS, awaiting negotiations.
[Jan 22, 16:49:55] INFO  EDIDataExtractor.logMessage() - 234 Enabling TLS, awaiting negotiations.

共 (0) 个答案