NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
dns_client.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_DNS_CLIENT_HPP__
2#define NEFORCE_NETWORK_DNS_CLIENT_HPP__
3
11
19NEFORCE_BEGIN_NAMESPACE__
20
26
32
47class NEFORCE_API dns_client {
48public:
53 struct config {
54 string server{"8.8.8.8"};
57 };
58
59private:
60 config config_{};
61 unordered_map<string, pair<dns_query_result, steady_clock::time_point>> cache_;
62 mutable shared_mutex cache_mutex_;
63 seconds cache_ttl_{300};
64 bool use_tcp_ = false;
65
66private:
67 byte_vector send_udp_query(const byte_vector& query) const;
68 byte_vector send_tcp_query(const byte_vector& query) const;
69
70 optional<dns_query_result> check_cache(const string& key);
71 void update_cache(const string& key, const dns_query_result& result);
72
73public:
81
88 explicit dns_client(config cfg, bool use_tcp = false);
89
94 void set_config(config cfg) { config_ = move(cfg); }
95
100 void set_timeout(const milliseconds timeout) { config_.timeout = timeout; }
101
106 void set_use_tcp(const bool use_tcp) { use_tcp_ = use_tcp; }
107
112 void set_cache_ttl(const seconds ttl) { cache_ttl_ = ttl; }
113
117 void clear_cache() { cache_.clear(); }
118
129
139
146
153
160
167
174
185
195};
196 // DNS
198 // Network
200
201NEFORCE_END_NAMESPACE__
202#endif // NEFORCE_NETWORK_DNS_CLIENT_HPP__
vector< string > resolve_aaaa(string_view domain)
解析AAAA记录(IPv6地址)
void clear_cache()
清空缓存
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)
批量查询
dns_client()
默认构造函数
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记录(邮件交换器)
独占future类模板
动态大小数组容器
时钟类型
DNS协议消息定义
异步结果消费者
vector< byte_t > byte_vector
字节向量类型别名
dns_query
DNS查询类型枚举
@ INTERNET
Internet类
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
字符字符串视图
可选值类型
网络端口定义和转换工具
共享互斥锁支持
DNS客户端配置
milliseconds timeout
查询超时时间
string server
DNS服务器地址
ports port
DNS服务器端口
DNS查询结果结构
raw
DNS记录类型枚举
@ A
IPv4地址记录
网络端口封装类
@ dns
DNS协议端口
无序映射容器