我在 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 連接。這是作為管理服務器端資源的一種方式完成的??臻e會話正在使用服務內存、內核資源、端口號等。如果不啟動空閑會話,則存在服務器將耗盡它們的風險……并停止工作。
檢查 FTP 服務器日志。您可能需要更改服務器端日志記錄級別……暫時……以獲得更多線索。
如果這是問題所在,更改客戶端超時等、使用保持活動等都無濟于事。事實上,如果您查看文檔,您一直在調整的大部分參數都是關于客戶端超時服務器的,而不是相反。
解決方案:
更改 FTP 服務器配置以允許會話空閑更長時間
在客戶端,定期發送請求讓服務器認為會話仍在使用中。
添加回答
舉報
0/150
提交
取消