Недавно я написал некоторое приложение, которое создает много потоков и подключается к различным серверам в качестве клиента, я использовал для него сокеты, тогда я понял, что могу сделать это с помощью библиотеки boost, поэтому я переписал приложение для повышения часть соединений работает хорошо и часть дает эту ошибку:Хост не найден (авторитетный)
Host not found (authoritative)
Я не знаю, почему это происходит, когда я 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 или что-то
, так что я могу сделать, я использую linux для тестирования, каждый домен является глобальным доменом, а не локальным, он разрешен getaddrbyhost, но не с помощью boost resolver ... –
Не работает ли ваш код для * каждого * домена или только для некоторых? –
только для некоторых ... но тот же домен работает с не форсированным кодом, это странно для меня –