根据为了解析主机的文档,boost::asio::ip::tcp::resolver::query
它也应该接受服务。
如果我想解析与端口无关的主机怎么办?我该怎么做呢?我应该指定虚拟端口吗?
根据为了解析主机的文档,boost::asio::ip::tcp::resolver::query
它也应该接受服务。
如果我想解析与端口无关的主机怎么办?我该怎么做呢?我应该指定虚拟端口吗?
在boost 邮件列表中的一篇帖子中,其他人似乎是这样做的(复制、重新格式化、更改服务号,仅此而已):
namespace bai = boost::asio::ip;
bai::tcp::endpoint ep(bai::address_v4(0xD155AB64), 0); // 209.85.171.100:0
boost::asio::io_service ios;
bai::tcp::resolver resolver(ios);
bai::tcp::resolver::iterator iter = resolver.resolve(ep);
bai::tcp::resolver::iterator end;
while (iter != end)
{
std::cerr << (*iter).host_name() << std::endl; // cg-in-f100.google.com
++iter;
}
正如你所说的那样,这里仍然传递了一个服务,但是通过 Boost.Asio 代码的一个步骤揭示了这一点(在 中resolver_service.hpp
,我使用的是相当旧的 1.36 版本):
// First try resolving with the service name. If that fails try resolving
// but allow the service to be returned as a number.
因此,只需选择 0,它就可以满足您的需求。