最近我写了一些应用程序,它创建了许多线程并连接到不同的服务器作为客户端,我使用套接字,然后我意识到我可以使用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很忙或什么
答案 0 :(得分:1)
最有可能的是,域是DNS无法解析的域,但可以通过主机平台使用的其他方法解析,例如/etc/hosts
样式表,WINS或某些类似的名称解析方案。< / p>
答案 1 :(得分:0)
嗯,答案是主机我试图连接是在我的LAN网络之外的另一个LAN网络注册为棘手的域。我无法知道,因为我正在测试存储在公司数据库中的20.000~主机。我以为一切都只在一个局域网网络上运行,但是没有。