gpt4 book ai didi

java - 使用 enterprisedt 的 ftp java 框架调用 disconnect() 时连接重置

转载 作者:行者123 更新时间:2023-11-29 09:25:12 24 4
gpt4 key购买 nike

我无法使用 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)

应该注意的是,我可以毫无问题地连接服务器,并使用服务器做一些事情,比如获取当前工作目录中的文件列表。但出于某种原因,我不能断开连接!我尝试过同时使用主动和被动模式。

上面的例子是从他们自己的例子中复制/粘贴过来的。我无法通过 Google 搜索找到与此相关的任何内容,因此我希望您能对此问题提出任何建议或经验。

最佳答案

尝试启用跟踪

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

这将让您观察图书馆和 ftp 服务器之间的通信。

尝试使用命令行客户端打开与 ftp 服务器的连接。连接、登录、验证是否一切正常。然后键入 quot quit。这会向 ftp 服务器发送一个明确的 quit 命令。您应该得到 221226 响应。如果您收到任何其他代码,或者连接刚刚关闭,那么您遇到的是不兼容的 FTP 服务器。

如果是这种情况,您还可以尝试使用 disconnect(true),因为它只是关闭连接而不是尝试正常关闭。

关于java - 使用 enterprisedt 的 ftp java 框架调用 disconnect() 时连接重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2930216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com