|
NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
|
DNS客户端类 更多...
#include <dns_client.hpp>
类 | |
| struct | config |
| DNS客户端配置 更多... | |
Public 成员函数 | |
| dns_client ()=default | |
| 默认构造函数 | |
| dns_client (config cfg, io_context &ctx, bool use_tcp=false) | |
| 构造函数 | |
| void | set_config (config cfg) noexcept |
| 设置客户端配置 | |
| void | set_timeout (const milliseconds timeout) noexcept |
| 设置超时时间 | |
| void | set_use_tcp (const bool use_tcp) noexcept |
| 设置是否使用TCP | |
| void | set_cache_ttl (const seconds ttl) noexcept |
| 设置缓存TTL | |
| void | set_recursion_desired (const bool rd) |
| 设置是否期望递归查询(RD) | |
| void | set_edns_udp_payload (const uint16_t payload_size) noexcept |
| 设置EDNS0 UDP载荷大小 | |
| void | set_dnssec_ok (const bool ok) noexcept |
| 设置是否请求DNSSEC(DO) | |
| void | clear_cache () noexcept |
| 清空缓存 | |
| dns_query_result | query (string_view domain, dns_record::raw type=dns_record::A, dns_class qclass=dns_class::INTERNET) |
| 执行DNS查询 | |
| future< dns_query_result > | query_async (const string &domain, dns_record::raw type=dns_record::A, dns_class qclass=dns_class::INTERNET) |
| 异步DNS查询(遗留 API——返回 future) | |
| void | async_query (string_view domain, dns_record::raw type, dns_class qclass, function< void(error_code, dns_query_result)> handler) |
| 异步DNS查询——回调完成 | |
| void | async_query (string_view domain, dns_record::raw type, dns_class qclass, cancellation_slot &slot, function< void(error_code, dns_query_result)> handler) |
| 异步DNS查询——回调完成 + 取消槽 | |
| template<typename Token, enable_if_t<!is_same_v< decay_t< Token >, function< void(error_code, dns_query_result)> >, int > = 0> | |
| void | async_query (string_view domain, dns_record::raw type, dns_class qclass, Token &&token) |
| 异步DNS查询——任意完成令牌 | |
| auto | async_query (string_view domain, dns_record::raw type, dns_class qclass, use_future_t) |
| 异步DNS查询——use_future | |
| void | async_query (string_view domain, dns_record::raw type, dns_class qclass, detached_t) |
| 异步DNS查询——detached(即发即忘) | |
| auto | async_query (string_view domain, dns_record::raw type, dns_class qclass, use_awaitable_t) |
| 异步DNS查询——use_awaitable | |
| vector< string > | resolve_a (string_view domain) |
| 解析A记录(IPv4地址) | |
| vector< string > | resolve_aaaa (string_view domain) |
| 解析AAAA记录(IPv6地址) | |
| vector< string > | resolve_cname (string_view domain) |
| 解析CNAME记录(别名) | |
| vector< string > | resolve_mx (string_view domain) |
| 解析MX记录(邮件交换器) | |
| vector< string > | resolve_txt (string_view domain) |
| 解析TXT记录(文本记录) | |
| vector< dns_srv_record > | resolve_srv (string_view domain) |
| 解析SRV记录(服务定位器) | |
| optional< dns_soa_record > | resolve_soa (string_view domain) |
| 解析SOA记录(授权区域起始) | |
| string | reverse_query (string_view ip) |
| 反向查询(从IP获取域名) | |
| vector< dns_query_result > | batch_query (const vector< string > &domains, dns_record::raw type=dns_record::A) |
| 批量查询 | |
静态 Public 成员函数 | |
| static byte_vector | build_query (string_view domain, dns_record::raw type=dns_record::A, dns_class qclass=dns_class::INTERNET, bool rd=true, bool edns_enable=true, bool dnssec_ok=false, uint16_t edns_payload=edns::DEFAULT_UDP_PAYLOAD) |
| 构建DNS查询消息 | |
| static dns_query_result | parse_response (const byte_vector &response, uint16_t expected_id=0) |
| 解析DNS响应消息 | |
DNS客户端类
提供DNS查询服务的完整实现,支持缓存、超时控制和多种查询类型。
主要功能:
在文件 dns_client.hpp 第 46 行定义.
|
default |
|
explicit |
| void neforce::dns_client::async_query | ( | string_view | domain, |
| dns_record::raw | type, | ||
| dns_class | qclass, | ||
| cancellation_slot & | slot, | ||
| function< void(error_code, dns_query_result)> | handler ) |
异步DNS查询——回调完成 + 取消槽
| domain | 域名 |
| type | 记录类型 |
| qclass | 查询类 |
| slot | 取消槽 |
| handler | 完成回调 void(error_code, dns_query_result) |
| void neforce::dns_client::async_query | ( | string_view | domain, |
| dns_record::raw | type, | ||
| dns_class | qclass, | ||
| detached_t | ) |
异步DNS查询——detached(即发即忘)
| domain | 域名 |
| type | 记录类型 |
| qclass | 查询类 |
| void neforce::dns_client::async_query | ( | string_view | domain, |
| dns_record::raw | type, | ||
| dns_class | qclass, | ||
| function< void(error_code, dns_query_result)> | handler ) |
异步DNS查询——回调完成
| domain | 域名 |
| type | 记录类型 |
| qclass | 查询类 |
| handler | 完成回调 void(error_code, dns_query_result) |
被这些函数引用 async_query().
|
inline |
异步DNS查询——任意完成令牌
| Token | 完成令牌类型(use_future / detached / use_awaitable / 任意可调用对象) |
| domain | 域名 |
| type | 记录类型 |
| qclass | 查询类 |
| token | 完成令牌 |
在文件 dns_client.hpp 第 247 行定义.
引用了 async_query() , 以及 neforce::forward().
| auto neforce::dns_client::async_query | ( | string_view | domain, |
| dns_record::raw | type, | ||
| dns_class | qclass, | ||
| use_awaitable_t | ) |
| auto neforce::dns_client::async_query | ( | string_view | domain, |
| dns_record::raw | type, | ||
| dns_class | qclass, | ||
| use_future_t | ) |
| vector< dns_query_result > neforce::dns_client::batch_query | ( | const vector< string > & | domains, |
| dns_record::raw | type = dns_record::A ) |
|
static |
构建DNS查询消息
| domain | 域名 |
| type | 记录类型 |
| qclass | 查询类 |
| rd | 是否期望递归 |
| edns_enable | 是否启用EDNS0 |
| dnssec_ok | 是否请求DNSSEC |
| edns_payload | EDNS0 UDP载荷大小 |
引用了 neforce::dns_record::A , 以及 INTERNET.
|
static |
| dns_query_result neforce::dns_client::query | ( | string_view | domain, |
| dns_record::raw | type = dns_record::A, | ||
| dns_class | qclass = dns_class::INTERNET ) |
执行DNS查询
| domain | 域名 |
| type | 记录类型(默认A记录) |
| qclass | 查询类(默认INTERNET) |
| dns_exception | 查询失败时抛出 |
引用了 neforce::dns_record::A , 以及 INTERNET.
| future< dns_query_result > neforce::dns_client::query_async | ( | const string & | domain, |
| dns_record::raw | type = dns_record::A, | ||
| dns_class | qclass = dns_class::INTERNET ) |
异步DNS查询(遗留 API——返回 future)
| domain | 域名 |
| type | 记录类型 |
| qclass | 查询类 |
引用了 neforce::dns_record::A , 以及 INTERNET.
| vector< string > neforce::dns_client::resolve_a | ( | string_view | domain | ) |
解析A记录(IPv4地址)
| domain | 域名 |
| vector< string > neforce::dns_client::resolve_aaaa | ( | string_view | domain | ) |
解析AAAA记录(IPv6地址)
| domain | 域名 |
| vector< string > neforce::dns_client::resolve_cname | ( | string_view | domain | ) |
解析CNAME记录(别名)
| domain | 域名 |
| vector< string > neforce::dns_client::resolve_mx | ( | string_view | domain | ) |
解析MX记录(邮件交换器)
| domain | 域名 |
| optional< dns_soa_record > neforce::dns_client::resolve_soa | ( | string_view | domain | ) |
解析SOA记录(授权区域起始)
| domain | 域名 |
| vector< dns_srv_record > neforce::dns_client::resolve_srv | ( | string_view | domain | ) |
解析SRV记录(服务定位器)
| domain | 域名 |
| vector< string > neforce::dns_client::resolve_txt | ( | string_view | domain | ) |
解析TXT记录(文本记录)
| domain | 域名 |
| string neforce::dns_client::reverse_query | ( | string_view | ip | ) |
反向查询(从IP获取域名)
| ip | IPv4地址 |
| dns_exception | IP地址无效时抛出 |
执行PTR记录查询,将IP地址转换为域名。 支持IPv4地址,IPv6支持有限。
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inlinenoexcept |
|
inline |
|
inlinenoexcept |
|
inlinenoexcept |