簡體   English   中英

ftp apache setDefaultimeout(),setSoTimeout()和setDataTimeout()之間的區別

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM