2010-11-30 60 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標誌。

相關問題