以下博客介绍了ftp apache命令net libaray的不同超时,即setDefaultTimeout(),setSoTimeout(),setDataTimeout()。
http://sudhirvn.blogspot.in/2007/05/ftpclient-timeout-values.html
但是,请澄清我对以上提到的超时WRT的疑问?
a)setSoTimeout()是否仅对ftp控制连接设置超时,而不对数据连接设置超时?
b)setDataTimeout()是否仅对ftp数据连接设置超时,而不对控制连接设置超时?(我问这是因为它使用基础java.net.Socket.setSoTimeout())
c)如果设置了setDefaultTimeout(),那么我们就不需要设置/使用setSoTimeout()和setDataTimeout()了?因为博客说“对于使用此FTPClient实例建立的所有连接,默认使用setDefaultTimeout()”。
d)我们还需要设置连接超时吗?如果我们不设置它,程序将依赖于出现的系统连接超时吗?
提前致谢 :)
最佳答案
这三个方法都在套接字级别触发对setSoTimeout()的调用。
setDefaultTimeout()在连接之前称为,在连接之前被称为,并将超时值传递给所有将来的控制连接的socket.setSoTimeout()。默认值为0,表示无限超时。在建立连接后,将FTPClient.setSoTimeout()用于,以覆盖当前套接字SO_TIMEOUT设置,并且仅适用于当前控件连接套接字。
setDataTimeout()设置从数据连接读取的超时。查看代码,默认值为0(无限等待)。
如果您想要不同于默认超时(无限)的内容,则只想调用这些方法。
我通过阅读文档和检查源代码确定了所有这些内容,因此,如果有人发现我所说的内容有误,请纠正我。