FTP客户端可以控制FTP服务器超时设置吗?


问题内容

我正在Java中使用 Apache Commons-Net

我想要的是使用Java代码在客户端阶段设置FTP服务器的连接超时

例如:

如果我查看FTP服务器的vsftpd.conf设置文件,

有一个idle_session_timeout=600设置

我想知道FTP客户端是否可以使用Java代码控制此空闲超时

我尝试了以下方法,但并非所有方法都有效

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

请帮我 :)


问题答案:

FTP客户端无法控制FTP服务器的设置。

但是您要问的似乎更像是XY问题,其中X可能是您希望防止服务器关闭空闲连接,而Y就是您想到的解决方案:从客户端控制服务器超时。仅此解决方案不起作用。

相反,您需要解决服务器关闭连接的真正原因:因为客户端没有活动。这个问题可以简单地通过客户端与服务器交互来解决。这种方式甚至有据可查。引用:

您应该记住,如果客户端空闲时间超过给定时间段(通常为900秒),则FTP服务器可能会选择过早关闭连接。…
通过定期向服务器发送NOOP命令,可以避免客户端空闲时服务器断开连接