Java ftp apache setDefaultimeout()、setSoTimeout()和setDataTimeout()之间的差异
下面的博客解释了ftp apache Commons net libaray的不同超时,即setDefaultTimeout()、setSoTimeout()、setDataTimeout() 但请澄清我对上述暂停的以下疑问 a) setSoTimeout()是否仅为ftp控制连接而不是数据连接设置超时 b) setDataTimeout()是否只为ftp数据连接设置超时,而不为控制连接设置超时?(我这样问是因为它使用底层的java.net.Socket.setSoTimeout() c) 如果我们设置了setDefaultTimeout(),那么我们就不需要设置/使用setSoTimeout()和setDataTimeout()?因为博客上说“setDefaultTimeout()是使用此FTPClient实例建立的所有连接的默认值。” d) 我们还需要设置连接超时吗?如果我们不设置它,程序会依赖于操作系统连接超时吗Java ftp apache setDefaultimeout()、setSoTimeout()和setDataTimeout()之间的差异,java,apache,ftp,timeout,Java,Apache,Ftp,Timeout,下面的博客解释了ftp apache Commons net libaray的不同超时,即setDefaultTimeout()、setSoTimeout()、setDataTimeout() 但请澄清我对上述暂停的以下疑问 a) setSoTimeout()是否仅为ftp控制连接而不是数据连接设置超时 b) setDataTimeout()是否只为ftp数据连接设置超时,而不为控制连接设置超时?(我这样问是因为它使用底层的java.net.Socket.setSoTimeout() c) 如
提前感谢:)这三种方法都会在套接字级别触发对setSoTimeout()的调用 setDefaultTimeout()在连接之前被调用,并将超时值传递给socket.setSortimeout(),以用于将来的所有控制连接。默认值为0,表示无限超时。FTPClient.setSoTimeout()在建立连接作为对当前套接字的覆盖后使用,因此超时设置仅适用于当前控制连接套接字 setDataTimeout()设置从数据连接读取的超时。查看代码,值0本质上是默认值(无限等待) 只有在需要与默认超时(无限)不同的内容时,才需要调用这些方法 我通过阅读文档和检查源代码确定了这一切,因此如果有人认为我所说的有问题,请纠正我