我正试图使用apache FtpCiient下载一个大文件,并且每2小时不断超时一次。所以,我设置了FTPClient.setDataTimeout(readTimeoutInMs);至3小时
它可以在windows上运行,但不能在linux上运行。
我在JavaDocs SocketClient.setKeepAlive()-中看到了这一点
在当前打开的套接字上设置SO_KEEPALIVE标志。在Javadocs中,默认的保活时间是2小时(尽管这取决于实现)。看起来好像Windows WSA套接字实现允许设置特定的保活值,尽管在其他系统上似乎不是这样
那么,我的readTimeout=3hours在linux上真的不起作用吗?我能做什么?
谢谢,
您混淆了几件事。保活和读取超时不是一回事。
-
Keepalive是一种TCP协议技巧,用于检测死连接,例如Telnet服务器。默认情况下,它处于关闭状态,打开时,默认测试间隔为两小时。对于一个活动的FTP连接,我怀疑打开它会有什么不同。
-
如果在超时时间段内未接收到任何数据,则读取超时会导致读取操作超时。它适用于每一次阅读。
-
您所指的FTP数据超时可能又是其他原因,例如总传输的超时。您必须查看它的文档才能确定。