0

我目前正在开发一个简单的服务器应用程序,它也应该支持 IPv6。IPv6 在 Windows 上运行良好(使用 MSVC2010),但在 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 上有效。

欢迎任何提示。

4

1 回答 1

0

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

于 2010-11-30T12:17:31.123 回答