主机未找到(权威)

时间:2013-11-07 17:07:49

标签: c++ boost boost-asio

最近我写了一些应用程序,它创建了许多线程并连接到不同的服务器作为客户端,我使用套接字,然后我意识到我可以使用boost库,所以我重写了应用程序,以促进部分连接工作良好和部分给出了这个错误:

  

未找到主机(权威)

我不知道为什么会发生这种情况,当我使用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很忙或什么

2 个答案:

答案 0 :(得分:1)

最有可能的是,域是DNS无法解析的域,但可以通过主机平台使用的其他方法解析,例如/etc/hosts样式表,WINS或某些类似的名称解析方案。< / p>

答案 1 :(得分:0)

嗯,答案是主机我试图连接是在我的LAN网络之外的另一个LAN网络注册为棘手的域。我无法知道,因为我正在测试存储在公司数据库中的20.000~主机。我以为一切都只在一个局域网网络上运行,但是没有。