Java套接字是否缓存DNS?
套接字的ctor具有将服务器作为字符串或InetAddress的版本。DNS查找的结果是否已缓存,以便另一个构造的套接字将跳过执行查找并使用缓存的值(如果可用)?如果是这样的话,这是适用于两个版本,还是只适用于使用InetAddress的版本 Java套接字是否缓存DNS 没有,但是Java套接字是否缓存DNS?,java,sockets,networking,dns,nio,Java,Sockets,Networking,Dns,Nio,套接字的ctor具有将服务器作为字符串或InetAddress的版本。DNS查找的结果是否已缓存,以便另一个构造的套接字将跳过执行查找并使用缓存的值(如果可用)?如果是这样的话,这是适用于两个版本,还是只适用于使用InetAddress的版本 Java套接字是否缓存DNS 没有,但是InetAddress有,或者它的引擎盖下有什么东西,并且Socket使用InetAddress解析名称,所以实际上是的 请参阅,networkaddress.cache.ttl和好友。是。DNS查找由解析器缓存。@
InetAddress
有,或者它的引擎盖下有什么东西,并且Socket
使用InetAddress
解析名称,所以实际上是的
请参阅,
networkaddress.cache.ttl
和好友。是。DNS查找由解析器缓存。@ElliottFrisch Java文档只谈到InetAddress下的缓存,说该类有一个缓存(我假设这意味着它在该类的所有对象之间共享)。但是,如果使用接受字符串而不是InetAddress的套接字构造函数,会怎么样呢?是否可以假设缓存中也有一个内部InetAddress共享?@DisplayName构造函数使用InetAddress
解析名称。它是同一个缓存。这是因为DNS名称解析是由gethostbyname2()
完成的(这是本机代码,系统上每个程序的解析过程都是相同的,所以它是系统级缓存)。@ElliottFrisch我不明白。这是一个GNU扩展,它不维护缓存。Java可以做到这一点。感谢您的澄清。