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

Java 连接到ftp服务器时未登录错误消息,java,ftp,Java,Ftp,我正在使用com.enterprisedt.net.ftp.ftp客户端登录我的ftp服务器 使用以下命令ftpClient.login(用户名,密码()) 我正在使用com.enterprisedt.net.ftp 但有时我会出现“未登录”错误 FTP服务器有一个域名。但是我只使用用户名、pwd和主机名作为dns名称登录 在大约10、15、20分钟内,我收到一个“未登录”错误 它不是总是发生,也不是以任何特定的模式发生,而是在错误发生后立即连接成功 [INFO][FTPPull:getFTPC

我正在使用com.enterprisedt.net.ftp.ftp客户端登录我的ftp服务器

使用以下命令ftpClient.login(用户名,密码())

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

但有时我会出现“未登录”错误

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

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

它不是总是发生,也不是以任何特定的模式发生,而是在错误发生后立即连接成功

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

但下一次连接是成功的

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

请帮助,不确定为什么有时连接,有时不连接

问候,,
Sridevi

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

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

  • 首先检查服务器端的配置:能否将命令通道超时更改为更高的值,甚至更改为无限
  • 然后检查客户端的API(我个人使用ApacheCommons的FTP客户端):它也有设置超时的方法吗
  • 最后,在API中检查命令通道的套接字是否使用TCP keepalive;如果没有,是否有设置方法?如果您自己将套接字传递给构造函数,请在构造客户端实例之前使其保持活动状态
然而,最可能的情况是FTP服务器本身关闭命令通道。这取决于实现

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

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

命令通道连接超时,这意味着您必须重新连接?哦,好的,这是因为超时吗?我可以在FTP服务器中设置连接超时属性吗?当然可以,但这取决于FTP服务器的实现。另外,您的TCP套接字是否使用keepalive?感谢您的快速响应,我可以在默认情况下将TCP套接字设置为激活状态吗?如果是,当我第一次连接到ftp服务器时,我将如何在代码中设置。我使用第三方ftp客户端连接ftp服务器。非常感谢。ftp服务器是我们的客户端域服务器。我将设置超时属性。通常,当超时设置为-1时,它将等待无限时间,对吗?我的超时有一个setter方法,但是规范没有指定大约-1的值,无论如何,我会做一个测试,非常感谢。•首先检查服务器端的配置:您可以将命令通道超时更改为更高的值,甚至无限大吗?您能告诉我如何设置windows/linux吗?不,我不能,因为我不知道您使用的是什么FTP服务器——而且我只有使用vsftpd的实际经验。