gpt4 book ai didi

java - ftp apache setDefaultimeout() 、 setSoTimeout() 和 setDataTimeout() 之间的区别

转载 作者:搜寻专家 更新时间:2023-11-01 02:45:12 25 4
gpt4 key购买 nike

以下博客解释了 ftp apache commens net libaray 的不同超时即 setDefaultTimeout()、setSoTimeout()、setDataTimeout()。

http://sudhirvn.blogspot.in/2007/05/ftpclient-timeout-values.html

但请澄清我对上述超时的以下疑问?

a)setSoTimeout() 是否只为 ftp 控制连接设置超时而不是数据连接?

b)setDataTimeout() 是否只为 ftp 数据连接设置超时而不是控制连接?(我问这个是因为它使用底层的 java.net.Socket.setSoTimeout() )

c)如果我们设置了 setDefaultTimeout() ,那么我们就不需要设置/使用 setSoTimeout() 和 setDataTimeout() 了?因为博客上说“setDefaultTimeout() 被默认用于使用此 FTPClient 实例建立的所有连接。”

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

提前致谢:)

最佳答案

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

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

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

如果您想要不同于默认超时(无限)的东西,您只会调用这些方法。

我是通过阅读文档和检查源代码来确定所有这些的,所以如果有人发现我说的有问题,请指正我。

关于java - ftp apache setDefaultimeout() 、 setSoTimeout() 和 setDataTimeout() 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24080678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com