@UnstableApi public class DnsNameResolver extends InetNameResolver
InetNameResolver
。
Constructor and Description |
---|
DnsNameResolver(EventLoop eventLoop, ChannelFactory<? extends DatagramChannel> channelFactory, DnsCache resolveCache, DnsCache authoritativeDnsServerCache, DnsQueryLifecycleObserverFactory dnsQueryLifecycleObserverFactory, long queryTimeoutMillis, ResolvedAddressTypes resolvedAddressTypes, boolean recursionDesired, int maxQueriesPerResolve, boolean traceEnabled, int maxPayloadSize, boolean optResourceEnabled, HostsFileEntriesResolver hostsFileEntriesResolver, DnsServerAddressStreamProvider dnsServerAddressStreamProvider, java.lang.String[] searchDomains, int ndots, boolean decodeIdn)
创建一个与指定的DNS服务器列表通信的新的基于DNS的名称解析器。
|
Modifier and Type | Method and Description |
---|---|
DnsCache |
authoritativeDnsServerCache()
返回用于域的授权DNS服务器的缓存。
|
void |
close()
关闭用于发送和接收DNS消息的内部数据报通道,并清除缓存中的所有DNS资源记录。
|
protected void |
doResolve(java.lang.String inetHost, DnsRecord[] additionals, Promise<java.net.InetAddress> promise, DnsCache resolveCache)
Hook专为扩展性而设计,因此可以在每次分辨率尝试时传递不同的缓存,而不是使用全局分辨率。
|
protected void |
doResolve(java.lang.String inetHost, Promise<java.net.InetAddress> promise)
由
SimpleNameResolver.resolve(String) 调用来执行实际的名称解析。
|
protected void |
doResolveAll(java.lang.String inetHost, DnsRecord[] additionals, Promise<java.util.List<java.net.InetAddress>> promise, DnsCache resolveCache)
Hook专为扩展性而设计,因此可以在每次分辨率尝试时传递不同的缓存,而不是使用全局分辨率。
|
protected void |
doResolveAll(java.lang.String inetHost, Promise<java.util.List<java.net.InetAddress>> promise)
由
SimpleNameResolver.resolveAll(String) 调用来执行实际的名称解析。
|
protected EventLoop |
executor()
返回 EventExecutor ,用于通知SimpleNameResolver.resolve(String) 返回的Future 的侦听器 。
|
HostsFileEntriesResolver |
hostsFileEntriesResolver()
在请求远程DNS服务器之前,返回尝试根据主机文件解析主机名的组件。
|
boolean |
isOptResourceEnabled()
返回一个可选记录的自动包含,该记录试图为远程DNS服务器提供关于解析器可以为每个响应读取多少数据的提示。
|
boolean |
isRecursionDesired()
返回
true 当且仅当此解析器发送DNS查询并设置了RD(递归所需)标志时。
|
static boolean |
isTimeoutError(java.lang.Throwable cause)
如果
Throwable 是由超时引起的,则返回
true 。
|
static boolean |
isTransportOrTimeoutError(java.lang.Throwable cause)
如果
Throwable 由超时或传输错误引起,则返回
true 。
|
int |
maxPayloadSize()
返回数据报包缓冲区的容量(以字节为单位)。
|
int |
maxQueriesPerResolve()
返回解析主机名时发送的DNS查询的最大允许数量。
|
Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> |
query(DnsQuestion question)
用指定的问题发送DNS查询。
|
Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> |
query(DnsQuestion question, java.lang.Iterable<DnsRecord> additionals)
用指定的问题发送带有附加记录的DNS查询。
|
Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> |
query(DnsQuestion question, Promise<AddressedEnvelope<? extends DnsResponse,java.net.InetSocketAddress>> promise)
用指定的问题发送DNS查询。
|
Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> |
query(java.net.InetSocketAddress nameServerAddr, DnsQuestion question)
使用指定的名称服务器列表发送包含指定问题的DNS查询。
|
Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> |
query(java.net.InetSocketAddress nameServerAddr, DnsQuestion question, java.lang.Iterable<DnsRecord> additionals)
使用指定的名称服务器列表发送带有指定问题的DNS查询以及其他记录。
|
Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> |
query(java.net.InetSocketAddress nameServerAddr, DnsQuestion question, java.lang.Iterable<DnsRecord> additionals, Promise<AddressedEnvelope<? extends DnsResponse,java.net.InetSocketAddress>> promise)
使用指定的名称服务器列表发送带有指定问题的DNS查询以及其他记录。
|
Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> |
query(java.net.InetSocketAddress nameServerAddr, DnsQuestion question, Promise<AddressedEnvelope<? extends DnsResponse,java.net.InetSocketAddress>> promise)
使用指定的名称服务器列表发送包含指定问题的DNS查询。
|
long |
queryTimeoutMillis()
返回此解析器执行的每个DNS查询的超时(以毫秒为单位)。
|
Future<java.net.InetAddress> |
resolve(java.lang.String inetHost, java.lang.Iterable<DnsRecord> additionals)
将指定的名称解析为地址。
|
Future<java.net.InetAddress> |
resolve(java.lang.String inetHost, java.lang.Iterable<DnsRecord> additionals, Promise<java.net.InetAddress> promise)
将指定的名称解析为地址。
|
Future<java.util.List<java.net.InetAddress>> |
resolveAll(java.lang.String inetHost, java.lang.Iterable<DnsRecord> additionals)
将指定的主机名和端口解析为地址列表。
|
Future<java.util.List<java.net.InetAddress>> |
resolveAll(java.lang.String inetHost, java.lang.Iterable<DnsRecord> additionals, Promise<java.util.List<java.net.InetAddress>> promise)
将指定的主机名和端口解析为地址列表。
|
DnsCache |
resolveCache()
返回分辨率缓存。
|
ResolvedAddressTypes |
resolvedAddressTypes()
|
protected DnsServerAddressStream |
uncachedRedirectDnsServerStream(java.util.List<java.net.InetSocketAddress> nameServers)
提供在重定向DNS查询之前排序名称服务器的机会。
|
asAddressResolver
resolve, resolve, resolveAll, resolveAll
public DnsNameResolver(EventLoop eventLoop, ChannelFactory<? extends DatagramChannel> channelFactory, DnsCache resolveCache, DnsCache authoritativeDnsServerCache, DnsQueryLifecycleObserverFactory dnsQueryLifecycleObserverFactory, long queryTimeoutMillis, ResolvedAddressTypes resolvedAddressTypes, boolean recursionDesired, int maxQueriesPerResolve, boolean traceEnabled, int maxPayloadSize, boolean optResourceEnabled, HostsFileEntriesResolver hostsFileEntriesResolver, DnsServerAddressStreamProvider dnsServerAddressStreamProvider, java.lang.String[] searchDomains, int ndots, boolean decodeIdn)
eventLoop
- 将执行与DNS服务器通信的EventLoop
channelFactory
-该ChannelFactory
,这将创建一个DatagramChannel
resolveCache
- DNS解析条目缓存
authoritativeDnsServerCache
- 用于查找域的授权DNS服务器的缓存
dnsQueryLifecycleObserverFactory
- 用于生成DnsQueryLifecycleObserver
的新实例,可用于跟踪DNS服务器的指标。
queryTimeoutMillis
- 以
queryTimeoutMillis
为单位的每个DNS查询的超时值
resolvedAddressTypes
- 首选的地址类型
recursionDesired
- 如果递归期望标志必须设置
maxQueriesPerResolve
- 给定名称解析的最大允许DNS查询数
traceEnabled
- 如果跟踪已启用
maxPayloadSize
- 数据报数据包缓冲区的容量
optResourceEnabled
- 如果自动包含可选记录已启用
hostsFileEntriesResolver
- HostsFileEntriesResolver
用于检查本地别名
dnsServerAddressStreamProvider
- DnsServerAddressStreamProvider
用于确定每个主机名查找的名称服务器。
searchDomains
- 搜索域的列表(可以为空,如果是,将尝试默认到底层平台)
ndots
- ndots价值
decodeIdn
- true
如果域/主机名称在收到时应解码为unicode。
见rfc3492 。
protected DnsServerAddressStream uncachedRedirectDnsServerStream(java.util.List<java.net.InetSocketAddress> nameServers)
nameServers
- 发生重定向时使用的DNS服务器的地址。
DnsServerAddressStream
将用于遵循DNS重定向。
public DnsCache resolveCache()
public DnsCache authoritativeDnsServerCache()
public long queryTimeoutMillis()
public ResolvedAddressTypes resolvedAddressTypes()
SimpleNameResolver.resolve(String)
解决的ResolvedAddressTypes
。
默认值取决于系统属性"java.net.preferIPv6Addresses"
的值。
public boolean isRecursionDesired()
true
当且仅当此解析器发送DNS查询且设置了RD(递归所需)标志时。
默认值是true
。
public int maxQueriesPerResolve()
8
。
public int maxPayloadSize()
4096
字节。
public boolean isOptResourceEnabled()
public HostsFileEntriesResolver hostsFileEntriesResolver()
public void close()
close
接口
NameResolver<java.net.InetAddress>
close
,界面
java.io.Closeable
close
,界面
java.lang.AutoCloseable
close
在课堂
SimpleNameResolver<java.net.InetAddress>
protected EventLoop executor()
SimpleNameResolver
executor
在课堂上
SimpleNameResolver<java.net.InetAddress>
public final Future<java.net.InetAddress> resolve(java.lang.String inetHost, java.lang.Iterable<DnsRecord> additionals)
inetHost
- 要解决的名称
additionals
- 其他记录(
OPT
)
public final Future<java.net.InetAddress> resolve(java.lang.String inetHost, java.lang.Iterable<DnsRecord> additionals, Promise<java.net.InetAddress> promise)
inetHost
- 要解决的名称
additionals
- 其他记录(
OPT
)
promise
- Promise
将在名称解析完成时完成
public final Future<java.util.List<java.net.InetAddress>> resolveAll(java.lang.String inetHost, java.lang.Iterable<DnsRecord> additionals)
inetHost
- 要解决的名称
additionals
- 其他记录(
OPT
)
public final Future<java.util.List<java.net.InetAddress>> resolveAll(java.lang.String inetHost, java.lang.Iterable<DnsRecord> additionals, Promise<java.util.List<java.net.InetAddress>> promise)
inetHost
- 要解决的名称
additionals
- 其他记录(
OPT
)
promise
- Promise
将在名称解析完成时完成
protected void doResolve(java.lang.String inetHost, Promise<java.net.InetAddress> promise) throws java.lang.Exception
SimpleNameResolver
SimpleNameResolver.resolve(String)
调用来执行实际的名称解析。
doResolve
在课程
SimpleNameResolver<java.net.InetAddress>
java.lang.Exception
protected void doResolve(java.lang.String inetHost, DnsRecord[] additionals, Promise<java.net.InetAddress> promise, DnsCache resolveCache) throws java.lang.Exception
java.lang.Exception
protected void doResolveAll(java.lang.String inetHost, Promise<java.util.List<java.net.InetAddress>> promise) throws java.lang.Exception
SimpleNameResolver
SimpleNameResolver.resolveAll(String)
调用来执行实际的名称解析。
doResolveAll
在课程
SimpleNameResolver<java.net.InetAddress>
java.lang.Exception
protected void doResolveAll(java.lang.String inetHost, DnsRecord[] additionals, Promise<java.util.List<java.net.InetAddress>> promise, DnsCache resolveCache) throws java.lang.Exception
java.lang.Exception
public Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> query(DnsQuestion question)
public Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> query(DnsQuestion question, java.lang.Iterable<DnsRecord> additionals)
public Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> query(DnsQuestion question, Promise<AddressedEnvelope<? extends DnsResponse,java.net.InetSocketAddress>> promise)
public Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> query(java.net.InetSocketAddress nameServerAddr, DnsQuestion question)
public Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> query(java.net.InetSocketAddress nameServerAddr, DnsQuestion question, java.lang.Iterable<DnsRecord> additionals)
public Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> query(java.net.InetSocketAddress nameServerAddr, DnsQuestion question, Promise<AddressedEnvelope<? extends DnsResponse,java.net.InetSocketAddress>> promise)
public Future<AddressedEnvelope<DnsResponse,java.net.InetSocketAddress>> query(java.net.InetSocketAddress nameServerAddr, DnsQuestion question, java.lang.Iterable<DnsRecord> additionals, Promise<AddressedEnvelope<? extends DnsResponse,java.net.InetSocketAddress>> promise)
public static boolean isTransportOrTimeoutError(java.lang.Throwable cause)
Throwable
是由超时或传输错误引起的,则返回true
。
这些方法可用于由DnsNameResolver
公开的各种方法返回的Future.cause()
。
public static boolean isTimeoutError(java.lang.Throwable cause)
true
if the
Throwable
was caused by an timeout. These methods can be used on the
Future.cause()
that is returned by the various methods exposed by this
DnsNameResolver
.
Copyright © 2008–2018 The Netty Project. All rights reserved.