连接到ftp服务器时未记录错误消息

时间:2011-12-20 11:25:50

标签: java ftp

我正在使用com.enterprisedt.net.ftp.FTPClient登录我的FTPSERVER

使用以下命令ftpClient.login(USER_NAME,PASSWORD());

我正在使用com.enterprisedt.net.ftp。

但有时我会收到“未登录”错误。

FTP服务器有一个域名。但我只使用用户名和密码和主机名作为dns名称登录。

在大约10分钟,15分钟,20分钟内,我收到“未登录”错误。

它不会始终发生,也不会以任何特定模式发生,但是在错误之后立即成功连接。

[INFO] [FTPPull:getFTPConnection] - FTP登录时出错:未登录主机是xxx.yyy.in使用的端口是6370 [12] [2011-11-10 14:59:18 CET]

但下一次连接是成功的

[INFO] [FTPPull:getFTPConnection] - 登录成功[12] [2011-11-10 15:09:18 CET]

请帮助,不确定为什么有时会连接,有时候没有连接。

此致 诗丽黛玮·阿雅潘

1 个答案:

答案 0 :(得分:1)

您的问题可能是FTP命令通道级别存在超时。当您的客户端检测到它时,它会自动重新连接,如您所见。

现在,您必须了解超时的来源:客户端或服务器端:

  • 首先检查服务器端的配置:是否可以将命令通道超时更改为更高的值,甚至更改为无限?
  • 然后检查您的客户端的API(我个人使用Apache Commons的FTP客户端):它是否也有办法设置超时?
  • 最后,在API中检查命令通道的套接字是否使用TCP keepalive;如果没有,它有一个设置方法吗?如果您自己将Socket传递给构造函数,请在构造客户端实例之前将其保持为keepalive。

然而,最可能的情况是FTP服务器本身关闭命令通道。改变这取决于实现。

检查服务器端断开连接的一种好方法是使用命令行FTP客户端进行检查。我个人使用lftp

$ lftp ftp://some.ftp.site/
lftp> debug
# idle, idle...
# if the server times out, it will tell you so