Boost logo

Boost Users :

Subject: Re: [Boost-users] boost::asio::ip::tcp::resolver::query does not work in Ubuntu!!!
From: mozdemir (mozdemir76_at_[hidden])
Date: 2012-05-12 22:39:39


Hi Andreas,

I have changed the code like below in the light of the link you sent.
it did help for sure. The stats comparing both case are:

1. Without res_init(), the frequency is around 6 exceptions after 2047
resolutions:

totalRes: 2047 errorNum: 6 Error: Host not found (authoritative)

2. with res_init(), in the first run i saw 2 exceptions out of 2000 but
later on i run it long time and did not see any exceptions!

Hopefully, this is the right fix. I leave the code below to help others.

Thanks a lot,
mustafa

================================================

#include <iostream>
#include <boost/asio/ip/tcp.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/thread.hpp>
#include <resolv.h>

using namespace boost::asio;

int main(int argc, char* argv[])
{
    io_service ios;
    int errorNum = 0;
    int totalRes = 0;
    while (true) {
        try {
            int i;
            for (i=0;i<1000;i++) {
                res_init();
                int m_port = 80;
                std::string m_host = "www.yahoo.com";
                boost::system::error_code ec;
                boost::asio::ip::tcp::resolver resolver( ios );
                boost::asio::ip::tcp::resolver::query query( m_host,
boost::lexical_cast< std::string >( m_port ));

                boost::asio::ip::tcp::resolver::iterator endpointIterator =
resolver.resolve( query );
                for (;endpointIterator != ip::tcp::resolver_iterator();
++endpointIterator) {
                    std::cout << "i: " << i << " ip: " <<
endpointIterator->endpoint().address().to_string() << std::endl;
                    totalRes++;
                }
                boost::this_thread::sleep(boost::posix_time::milliseconds(
100 ));
            }

        } catch (std::exception const& ex) {
            errorNum++;
            std::cerr << "totalRes: " << totalRes << " errorNum: " <<
errorNum <<" Error: " << ex.what() << '\n';
            boost::this_thread::sleep(boost::posix_time::milliseconds( 3000
));
        }
    }

    return 0;
}
========================================================

--
View this message in context: http://boost.2283326.n4.nabble.com/boost-asio-ip-tcp-resolver-query-does-not-work-in-Ubuntu-tp4628195p4629904.html
Sent from the Boost - Users mailing list archive at Nabble.com.

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net