2016-02-17 70 views
1

Socket的ctor具有將服務器作爲字符串或InetAddress的版本。是否緩存DNS查找的結果,以便另一個構造的套接字將跳過執行查找並使用緩存的值(如果可用)?如果是這樣,這是適用於這兩個版本,或只是一個採取InetAddress?Java Socket緩存DNS嗎?

+2

是的。 DNS查找由解析器緩存。 –

+0

@ElliottFrisch Java文檔只談論的InetAddress下緩存,說班裏有一個緩存(我假設,這意味着它在類的所有對象之間共享)。但是,當使用帶字符串而不是InetAddress的Socket ctor時,怎麼樣?我們可以假設有一個內部的InetAddress也在那個緩存中共享嗎? –

+0

@DisplayName該構造函數使用'InetAddress'來解析名稱。這是相同的緩存。 – EJP

回答

3

Java Socket緩存DNS嗎?

沒有,但InetAddress呢,還是它的引擎蓋下的東西,和Socket使用InetAddress來解析名稱,所以效果肯定。

查看Java Networking Properties,networkaddress.cache.ttl和朋友。

+0

感謝您的澄清。 –