8 Haziran 2017 Perşembe

asio tcp resolver query Sınıfı

Giriş
Bu sınıf resolver nesnesinin query() metoduna parametre olarak geçilir. query() metodu bir endpoint döner.
Örnek
Şöyle yaparız.
boost::asio::io_service ios;
boost::asio::ip::tcp::resolver resolver(ios);
boost::asio::ip::tcp::resolver::query query(server_ip, port);
auto endpoint = *resolver.resolve(query);
boost::asio::ip::tcp::socket socket (ios);
socket.connect(endpoint);
Örnek
Şöyle yaparız.
asio::ip::tcp::resolver::query q (asio::ip::tcp::v4(), "localhost", "8082");

asio::io_service      ios;
asio::ip::tcp::socket socket (ios);

asio::ip::tcp::resolver r (ios);
asio::connect(socket, r.resolve (q));
Constructor - host_name ()
Şöyle yaparız. host_name () metodu benim sistemimde "acelya dönüyor. Döndürülen endpoint'lerin port numarası 0'dır.
tcp::resolver::query q (boost::asio::ip::host_name(),"");
Tüm ethernet arayüz adreslerini almak için şöyle yaparız.
tcp::resolver r (ios);
tcp::resolver::query q (boost::asio::ip::host_name(),"");
tcp::resolver::iterator it=r.resolve(query);

while(it!=tcp::resolver::iterator())
{
    boost::asio::ip::address addr=(it++)->endpoint().address();

    std::cout<<addr.to_string()<<std::endl;
}
Çıktı olarak şunu alırız.
"192.168.1.2"    
"192.168.1.100"   
"192.168.2.1"  
Constructor - hostname + port
Şöyle yaparız. Yerel bir sunucuya bağlanmak için kullanırız.
tcp::resolver::query q ("localhost", "8080");
Constructor - ip + port
Şöyle yaparız.
constexpr const char *port       = "9200";
constexpr const char *server_ip  = "172.20.1.160";
boost::asio::ip::tcp::resolver::query query(server_ip, port);
Constructor - protocol + port
Şöyle yaparız. Yerel bir sunucuya bağlanmak için kullanırız.
tcp::resolver::query q (tcp::v4(), "10112");
Constructor - protocol + hostname + port
Şöyle yaparız.
asio::ip::tcp::resolver::query q (asio::ip::tcp::v4(), "localhost", "8082");
Constructor - url + port
Örnek
Şöyle yaparız.
std::string url = "www.stackoverflow.com";
tcp::resolver::query q {url, "80"};
Örnek
Şöyle yaparız.
std::string const url = "www.thomas-bayer.com";
tcp::resolver::query q(url, "80",
  boost::asio::ip::resolver_query_base::numeric_service);
Şu kullanım şekli tüm url + parametreler verildiği için yanlış.
std::string url = "http://www.thomas-bayer.com/axis2/services/BLZService/";
tcp::resolver::query q(url,boost::asio::ip::resolver_query_base::numeric_service);


Hiç yorum yok:

Yorum Gönder