我无法使用enterprisedt java ftp framework.
断开与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)
应该注意的是,我没有问题可以连接,并对服务器做一些事情,比如获取当前工作目录中的文件列表。但由于某种原因,我无法断开连接!我尝试过使用主动和被动模式。
上面的例子是从他们自己的例子中复制/粘贴的方式。我无法通过谷歌搜索来解决与此相关的任何问题,因此我希望您对此问题有任何建议或经验。
答案 0 :(得分:0)
尝试使用
启用跟踪com.enterprisedt.util.debug.Logger.setLevel(com.enterprisedt.util.debug.Level.DEBUG);
这将让您观察库和ftp服务器之间的通信。
尝试使用命令行客户端打开与ftp服务器的连接。连接,登录,验证一切正常。然后输入quot quit
。这会向ftp服务器发送显式quit
命令。您应该获得221
或226
响应。如果你得到任何其他代码,或者刚刚关闭了连接,那么你就会遇到不兼容的FTP服务器。
如果是这种情况,您也可以尝试使用disconnect(true)
,因为它只是关闭连接而不是尝试正常关闭。