<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>ip::resolver_service::query_type</title>
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
<link rel="home" href="../../../boost_asio.html" title="Boost.Asio">
<link rel="up" href="../ip__resolver_service.html" title="ip::resolver_service">
<link rel="prev" href="protocol_type.html" title="ip::resolver_service::protocol_type">
<link rel="next" href="resolve.html" title="ip::resolver_service::resolve">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="protocol_type.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ip__resolver_service.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../boost_asio.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="resolve.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_asio.reference.ip__resolver_service.query_type"></a><a class="link" href="query_type.html" title="ip::resolver_service::query_type">ip::resolver_service::query_type</a>
</h4></div></div></div>
<p>
          <a class="indexterm" name="id1403197"></a> 
The query type.
        </p>
<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">basic_resolver_query</span><span class="special">&lt;</span> <span class="identifier">InternetProtocol</span> <span class="special">&gt;</span> <span class="identifier">query_type</span><span class="special">;</span>
</pre>
<a name="boost_asio.reference.ip__resolver_service.query_type.types"></a><h6>
<a name="boost_asio.reference.ip__resolver_service.query_type.types-heading"></a>
          <a class="link" href="query_type.html#boost_asio.reference.ip__resolver_service.query_type.types">Types</a>
        </h6>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                  <p>
                    Name
                  </p>
                </th>
<th>
                  <p>
                    Description
                  </p>
                </th>
</tr></thead>
<tbody>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/flags.html" title="ip::basic_resolver_query::flags"><span class="bold"><strong>flags</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    A bitmask type (C++ Std [lib.bitmask.types]).
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/protocol_type.html" title="ip::basic_resolver_query::protocol_type"><span class="bold"><strong>protocol_type</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    The protocol type associated with the endpoint query.
                  </p>
                </td>
</tr>
</tbody>
</table></div>
<a name="boost_asio.reference.ip__resolver_service.query_type.member_functions"></a><h6>
<a name="boost_asio.reference.ip__resolver_service.query_type.member_functions-heading"></a>
          <a class="link" href="query_type.html#boost_asio.reference.ip__resolver_service.query_type.member_functions">Member
          Functions</a>
        </h6>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                  <p>
                    Name
                  </p>
                </th>
<th>
                  <p>
                    Description
                  </p>
                </th>
</tr></thead>
<tbody>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/basic_resolver_query.html" title="ip::basic_resolver_query::basic_resolver_query"><span class="bold"><strong>basic_resolver_query</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Construct with specified service name for any protocol.
                  </p>
                  <p>
                    Construct with specified service name for a given protocol.
                  </p>
                  <p>
                    Construct with specified host name and service name for any protocol.
                  </p>
                  <p>
                    Construct with specified host name and service name for a given
                    protocol.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/hints.html" title="ip::basic_resolver_query::hints"><span class="bold"><strong>hints</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Get the hints associated with the query.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/host_name.html" title="ip::basic_resolver_query::host_name"><span class="bold"><strong>host_name</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Get the host name associated with the query.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/service_name.html" title="ip::basic_resolver_query::service_name"><span class="bold"><strong>service_name</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Get the service name associated with the query.
                  </p>
                </td>
</tr>
</tbody>
</table></div>
<a name="boost_asio.reference.ip__resolver_service.query_type.data_members"></a><h6>
<a name="boost_asio.reference.ip__resolver_service.query_type.data_members-heading"></a>
          <a class="link" href="query_type.html#boost_asio.reference.ip__resolver_service.query_type.data_members">Data
          Members</a>
        </h6>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
                  <p>
                    Name
                  </p>
                </th>
<th>
                  <p>
                    Description
                  </p>
                </th>
</tr></thead>
<tbody>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/address_configured.html" title="ip::basic_resolver_query::address_configured"><span class="bold"><strong>address_configured</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Only return IPv4 addresses if a non-loopback IPv4 address is
                    configured for the system. Only return IPv6 addresses if a non-loopback
                    IPv6 address is configured for the system.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/all_matching.html" title="ip::basic_resolver_query::all_matching"><span class="bold"><strong>all_matching</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/canonical_name.html" title="ip::basic_resolver_query::canonical_name"><span class="bold"><strong>canonical_name</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Determine the canonical name of the host specified in the query.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/numeric_host.html" title="ip::basic_resolver_query::numeric_host"><span class="bold"><strong>numeric_host</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Host name should be treated as a numeric string defining an IPv4
                    or IPv6 address and no name resolution should be attempted.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/numeric_service.html" title="ip::basic_resolver_query::numeric_service"><span class="bold"><strong>numeric_service</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Service name should be treated as a numeric string defining a
                    port number and no name resolution should be attempted.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/passive.html" title="ip::basic_resolver_query::passive"><span class="bold"><strong>passive</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    Indicate that returned endpoint is intended for use as a locally
                    bound socket endpoint.
                  </p>
                </td>
</tr>
<tr>
<td>
                  <p>
                    <a class="link" href="../ip__basic_resolver_query/v4_mapped.html" title="ip::basic_resolver_query::v4_mapped"><span class="bold"><strong>v4_mapped</strong></span></a>
                  </p>
                </td>
<td>
                  <p>
                    If the query protocol family is specified as IPv6, return IPv4-mapped
                    IPv6 addresses on finding no IPv6 addresses.
                  </p>
                </td>
</tr>
</tbody>
</table></div>
<p>
          The <a class="link" href="../ip__basic_resolver_query.html" title="ip::basic_resolver_query"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver_query</span></code></a> class template
          describes a query that can be passed to a resolver.
        </p>
<a name="boost_asio.reference.ip__resolver_service.query_type.thread_safety"></a><h6>
<a name="boost_asio.reference.ip__resolver_service.query_type.thread_safety-heading"></a>
          <a class="link" href="query_type.html#boost_asio.reference.ip__resolver_service.query_type.thread_safety">Thread
          Safety</a>
        </h6>
<p>
          <span class="bold"><strong>Distinct</strong></span> <span class="bold"><strong>objects:</strong></span>
          Safe.
        </p>
<p>
          <span class="bold"><strong>Shared</strong></span> <span class="bold"><strong>objects:</strong></span>
          Unsafe.
        </p>
<a name="boost_asio.reference.ip__resolver_service.query_type.requirements"></a><h6>
<a name="boost_asio.reference.ip__resolver_service.query_type.requirements-heading"></a>
          <a class="link" href="query_type.html#boost_asio.reference.ip__resolver_service.query_type.requirements">Requirements</a>
        </h6>
<p>
          <span class="bold"><strong>Header: </strong></span><code class="literal">boost/asio/ip/resolver_service.hpp</code>
        </p>
<p>
          <span class="bold"><strong>Convenience header: </strong></span><code class="literal">boost/asio.hpp</code>
        </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright &#169; 2003-2011 Christopher
      M. Kohlhoff<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="protocol_type.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../ip__resolver_service.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../boost_asio.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="resolve.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
