![](/img/trans.png)
[英]What is the difference between the setConnectionTimeout , setSoTimeout and “http.connection-manager.timeout” in apache HttpClient API
[英]Difference between ftp apache setDefaultimeout() , setSoTimeout() and setDataTimeout()
以下博客解釋了ftp apache commens 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(),那么我們不需要set / use setSoTimeout()和setDataTimeout()?因為博客說'setDefaultTimeout()默認用於使用這個FTPClient實例建立的所有連接。
d)我們還需要設置連接超時嗎? 如果我們不設置它,程序是否會依賴於opearting系統連接超時?
提前致謝 :)
這三種方法都會在套接字級別觸發對setSoTimeout()的調用。
setDefaultTimeout() 在連接之前被調用,並將超時值傳遞給socket.setSoTimeout()以用於所有將來的控制連接。 默認值為0,表示無限超時。 建立連接后,使用FTPClient.setSoTimeout()作為當前套接字SO_TIMEOUT設置的覆蓋,並僅應用於當前控制連接套接字。
setDataTimeout()設置從數據連接讀取的超時。 查看代碼,值0基本上是默認值(無限等待)。
如果你想要一些不同於默認超時(無限)的東西,你只想調用這些方法。
我通過閱讀文檔和檢查源代碼確定了所有這些,所以如果有人看到我所說的錯誤,請糾正我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.