【问题标题】:FTP Server connection closes in about 5 minutes [duplicate]FTP 服务器连接在大约 5 分钟后关闭 [重复]
【发布时间】:2019-12-12 13:13:10
【问题描述】:

我在 java 中使用 Apache commons-net 3.6

我正在制作一个程序,它以一定的间隔周期访问 ftp 服务器并接收文件(只有一个文件)

当我第一次运行该程序时,它可以正常运行,但是大约 5 分钟后,当我再次访问该文件时,我打印出一条错误消息..

(如果interval-cycle小于5分钟,则周期性运行)

当然,与服务器的连接只在第一次开始时进行

error message : org.apache.commons.net.ftp.FTPConnectionClosedException: FTP response 421 received.  Server closed connection.

我认为是ftp连接超时问题

所以我尝试的方式

FTPClient.setControlKeepAliveTimeout(sec);
FTPClient.setConnectTimeout(ms);
FTPClient.setDataTimeout(ms);
FTPClient.connect();
FTPClient.setSoTimeout(ms);

但是,不工作..仍然输出错误消息。

请帮帮我:(

【问题讨论】:

  • 每次完成后都应该关闭连接。你不能依赖服务器为你保持开放。
  • @user207421 你能解释一下为什么你不能保持服务器打开吗?
  • 因为你不能依赖服务器来为你保持开放。我已经说过了。这正是您正在经历的。

标签: java ftp ftp-client apache-commons-net


【解决方案1】:

听起来服务器决定在一段时间(5 分钟)不活动后关闭 FTP 连接。这是作为在服务器端管理资源的一种方式。空闲会话正在使用服务内存、内核资源、端口号等。如果没有引导空闲会话,则服务器可能会用完它们......并停止工作。

检查 FTP 服务器日志。您可能需要更改服务器端日志记录级别...暂时...以获得更多线索。

如果这是问题所在,更改客户端超时等,使用保持活动等将无济于事。事实上,如果您查看文档,您一直在调整的大多数参数都是关于客户端超时服务器的,而不是相反。

解决方案:

  • 更改 FTP 服务器配置以允许会话空闲更长时间

  • 在客户端,定期发送请求,让服务端认为会话仍在使用中。

【讨论】:

  • 客户端不能用java代码控制FTP服务器的连接超时吗?
  • 不。从服务器管理员的 POV 来看,这将适得其反。
猜你喜欢
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 2014-09-08
相关资源
最近更新 更多