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 に答える