-3

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

找不到主机(权威)

我不知道为什么会发生这种情况,当我使用 getaddrbyhost 时,它运行良好,但是 boost 解析器给出了这个错误......可能有什么问题,每个地址都是域。

以下是部分代码:

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

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

于 2013-11-07T17:14:03.253 回答
1

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

于 2015-03-06T18:08:27.420 回答