c – 使用Asio进行DNS反向查找
发布时间:2020-12-16 04:52:16 所属栏目:百科 来源:网络整理
导读:我想用asio进行DNS反向查找(返回给定IP地址的主机名),但我无法弄清楚我需要实现哪些组件. Asio documentmentiation是指ip :: basic_resolver :: resolve,但是需要一个endpoint_type,我不知道如何使用它. 有人可以发帖或参考一个例子吗? 编辑: 在Joachim Pi
我想用asio进行DNS反向查找(返回给定IP地址的主机名),但我无法弄清楚我需要实现哪些组件. Asio documentmentiation是指ip :: basic_resolver :: resolve,但是需要一个endpoint_type,我不知道如何使用它.
有人可以发帖或参考一个例子吗? 编辑: #include <asio.hpp> #include <string> #include <iostream> int main() { asio::ip::address_v4 ipa = asio::ip::address_v4::from_string("8.8.8.8"); asio::ip::tcp::endpoint ep; ep.address(ipa); asio::io_service io_service; asio::ip::tcp::resolver resolver(io_service); asio::ip::tcp::resolver::iterator destination = resolver.resolve(ep); std::cout << destination->host_name() << std::endl; return 0; } 解决方法
我没有在我自己的Boost ASIO中使用解析器,但通过参考文档阅读它似乎不应该直接使用ip :: basic_resolver.相反,你应该使用例如ip :: tcp :: resolver,在这种情况下,端点是ip :: tcp :: endpoint的实例.
编辑 由于每个主机可以有多个主机名,因此OPs解决方案可以像这样扩展: asio::ip::tcp::resolver::iterator itr = resolver.resolve(ep); asio::ip::tcp::resolver::iterator end; for (int i = 1; itr != end; itr++,i++) std::cout << "hostname #" << i << ": " << itr->host_name() << 'n'; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |