【发布时间】:2013-11-07 17:07:48
【问题描述】:
最近我写了一些应用程序,它创建了许多线程并作为客户端连接到不同的服务器,我使用了套接字,然后我意识到我可以使用 boost 库来做到这一点,所以我重写了应用程序来提升部分连接工作良好并且部分给出这个错误:
找不到主机(权威)
我不知道为什么会这样,当我使用 getaddrbyhost 时它工作得很好,但是 boost resolver 给出了这个错误...... 有什么问题,每个地址都是域。
这是部分代码:
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 很忙或其他什么
【问题讨论】:
标签: c++ boost boost-asio