-3

最近、多くのスレッドを作成し、クライアントとしてさまざまなサーバーに接続するアプリを作成しました。そのためにソケットを使用しましたが、ブーストライブラリでそれを実行できることに気付きました。エラー:

ホストが見つかりません (権限あり)

getaddrbyhost を使用すると完全に機能しますが、ブーストリゾルバーでこのエラーが発生する理由はわかりません...何が問題なのか、すべてのアドレスがドメインです。

コードの一部を次に示します。

class client
{
public:
    client(boost::asio::io_service& io_service,
           const char* server, const char* port, const int i)
        : resolver_(io_service),
          socket_(io_service),
          i_(i)
    {

        tcp::resolver::query query(tcp::v4(), boost::lexical_cast< std::string >( server ),  boost::lexical_cast< std::string >( port ), boost::asio::ip::resolver_query_base::numeric_service);
        resolver_.async_resolve(query,
                                boost::bind(&client::handle_resolve, this,
                                            boost::asio::placeholders::error,
                                            boost::asio::placeholders::iterator));
    }

private:
    void handle_resolve(const boost::system::error_code& err,
                        tcp::resolver::iterator endpoint_iterator)
    {
        if (!err)
        {
            boost::asio::async_connect(socket_, endpoint_iterator,
                                       boost::bind(&client::handle_connect, this,
                                                   boost::asio::placeholders::error));
        }
        else
        {
            //here outputs error 
            std::cout << __FUNCTION__ << " Error: " << err.message() << "\n";
        }
    }

昨日は完全に奇妙な編集で、問題が発生しましたが、今日は動作します...うーん、dhcpがビジーか何かだったのかもしれません

4

2 に答える 2

1

答えは、私が接続しようとしていたホストが、トリッキー ドメインとして登録されている別の LAN ネットワーク内の LAN ネットワークの外にあったということです。会社のデータベースに保存されている約 20.000 ~ のホストをテストしていたので、それを知ることができませんでした。すべてが 1 つの LAN ネットワークだけで実行されていると思っていましたが、違います。

于 2015-03-06T18:08:27.420 に答える