我在 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);但是,不工作.. 仍然输出错误消息。
1 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
听起来服务器在一段时间(5 分钟)不活动后决定关闭 FTP 连接。这是作为管理服务器端资源的一种方式完成的。空闲会话正在使用服务内存、内核资源、端口号等。如果不启动空闲会话,则存在服务器将耗尽它们的风险……并停止工作。
检查 FTP 服务器日志。您可能需要更改服务器端日志记录级别……暂时……以获得更多线索。
如果这是问题所在,更改客户端超时等、使用保持活动等都无济于事。事实上,如果您查看文档,您一直在调整的大部分参数都是关于客户端超时服务器的,而不是相反。
解决方案:
更改 FTP 服务器配置以允许会话空闲更长时间
在客户端,定期发送请求让服务器认为会话仍在使用中。
添加回答
举报
0/150
提交
取消