最近、多くのスレッドを作成し、クライアントとしてさまざまなサーバーに接続するアプリを作成しました。そのためにソケットを使用しましたが、ブーストライブラリでそれを実行できることに気付きました。エラー:
ホストが見つかりません (権限あり)
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がビジーか何かだったのかもしれません