asio::ip::tcp::resolver::query query{"www.google.com", "80"};
让我更加困惑的是,有一个“查询”构造函数只接受“服务”。评论给出了一点解释:
此构造函数通常用于执行名称解析 本地服务绑定我不明白,我认为 DNS 查找严格用于(名称 -> IP 号码)映射。如果我解析端口 109 的名称,然后解析端口 400 的相同名称,我会得到相同的 IP 号码吗?
此外,系统可能有一个类似
/etc/services
的文件,它为端口分配名称。解析器很可能(尽管我从未尝试过)使用它,因此您可以将
https
作为“服务”而不是 443。不过,我认为依赖它风险太大。
tcp::resolver
和
udp::resolver
之间毫无意义的区别发挥了相同的作用:它允许解析器返回
tcp::endpoint
或
udp::endpoint
(即使它们包含完全相同的数据......),并且还有助于“服务”文件查找。