1#ifndef NEFORCE_NETWORK_DNS_CLIENT_HPP__
2#define NEFORCE_NETWORK_DNS_CLIENT_HPP__
19NEFORCE_BEGIN_NAMESPACE__
61 unordered_map<string, pair<dns_query_result, steady_clock::time_point>> cache_;
62 mutable shared_mutex cache_mutex_;
64 bool use_tcp_ =
false;
70 optional<dns_query_result> check_cache(
const string& key);
71 void update_cache(
const string& key,
const dns_query_result& result);
201NEFORCE_END_NAMESPACE__
vector< string > resolve_aaaa(string_view domain)
解析AAAA记录(IPv6地址)
void set_timeout(const milliseconds timeout)
设置超时时间
dns_client(config cfg, bool use_tcp=false)
构造函数
dns_query_result query(string_view domain, dns_record::raw type=dns_record::A, dns_query qclass=dns_query::INTERNET)
执行DNS查询
string reverse_query(string_view ip)
反向查询(从IP获取域名)
void set_use_tcp(const bool use_tcp)
设置是否使用TCP
void set_config(config cfg)
设置客户端配置
vector< string > resolve_txt(string_view domain)
解析TXT记录(文本记录)
vector< dns_query_result > batch_query(const vector< string > &domains, dns_record::raw type=dns_record::A)
批量查询
vector< string > resolve_a(string_view domain)
解析A记录(IPv4地址)
void set_cache_ttl(const seconds ttl)
设置缓存TTL
vector< string > resolve_cname(string_view domain)
解析CNAME记录(别名)
future< dns_query_result > query_async(const string &domain, dns_record::raw type=dns_record::A, dns_query qclass=dns_query::INTERNET)
异步DNS查询
vector< string > resolve_mx(string_view domain)
解析MX记录(邮件交换器)
vector< byte_t > byte_vector
字节向量类型别名
duration< int64_t, milli > milliseconds
毫秒持续时间
duration< int64_t > seconds
秒持续时间
constexpr Iterator2 move(Iterator1 first, Iterator1 last, Iterator2 result) noexcept(noexcept(inner::__move_aux(first, last, result)))
移动范围元素
basic_string_view< char > string_view
字符字符串视图
milliseconds timeout
查询超时时间