6
根据boost::asio::ip::tcp::resolver::query
的documentation为了解析主机,它也应该接收服务 。如何使用Boost.Asio解析主机(仅)?
如果我想解析与端口无关的主机,该怎么办?我应该怎么做呢?我应该指定虚拟端口 ?
根据boost::asio::ip::tcp::resolver::query
的documentation为了解析主机,它也应该接收服务 。如何使用Boost.Asio解析主机(仅)?
如果我想解析与端口无关的主机,该怎么办?我应该怎么做呢?我应该指定虚拟端口 ?
在one post in the boost mailing list别人看起来像这样做(复制,格式化,服务号码换了,没有别的):
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,它应该做你想要什么。
不是你使用端口号“ep(bai :: address_v4(0xD155AB64),80); // 209.85.171.100:80” – Artyom 2009-10-04 20:21:31
我稍微修改了一下这个例子,希望它有帮助。 – gimpf 2009-10-05 12:10:52