ftp apache setDefaultimeout()、setSoTimeout()和setDataTimeout(



下面的博客解释了ftp apache comments net库的不同超时,即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() ?因为博客说'setDefaultTimeout()被默认用于使用这个FTPClient实例的所有连接'

d)我们还需要设置连接超时吗?如果我们不设置它,程序会依赖于操作系统连接超时吗?

提前感谢:)

这三个方法都在套接字级别触发对setSoTimeout()的调用。

setDefaultTimeout()在连接之前被调用,并将超时间值传递给socket.setSoTimeout()用于所有未来的控制连接。默认值为0,表示无限超时。FTPClient.setSoTimeout()在连接建立之后使用作为对当前套接字SO_TIMEOUT设置的覆盖,并且仅适用于当前控制连接套接字。

setDataTimeout()设置从数据连接读取的超时时间。查看代码,0实际上是默认值(无限等待)。

只有当你想要不同于默认超时(infinite)时,你才需要调用这些方法。

我通过阅读文档和检查源代码确定了所有这些,所以如果有人看到我说的有问题,请纠正我。

相关内容

  • 没有找到相关文章

最新更新