2010-11-30 57 views
0

我目前正在开发一个简单的服务器应用程序,该应用程序也应具有IPv6功能。 IPv6在Windows上运行良好(使用MSVC2010),但它不在Linux上。提升asio:在解析器::查询中使用IPv6地址在Win32上可用,但在Linux上不可用

想象一下下面的代码:

boost::system::error_code ec; 
std::string address="::1", service="http"; 
tcp::resolver resolver(io_service); 
tcp::resolver::query query(address, service); 
tcp::resolver::iterator resiter = resolver.resolve(query, ec); 

if (ec) 
    std::cout << "Cannot resolve address: " << address << "(" << ec.message() << ")" << std::endl; 

印刷Linux上的错误消息 “找不到主机(权威)”,而它适用于Windows。

欢迎任何提示。

+0

`/ etc/hosts`在您的Linux系统上的外观如何。 – 2010-11-30 16:47:22

回答

0

Linux和Windows对于名称服务返回的地址搜索顺序具有不同的行为。尝试使用不同的标志来更好地控制您要查询的地址类型。例如,对于这个查询,你可以使用numeric_host标志。

相关问题