Insane_DNS/libraries/asio-1.28.1/doc/asio/net_ts.html

1222 lines
70 KiB
HTML
Raw Permalink Normal View History

2023-10-24 21:59:30 -04:00
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Networking TS compatibility</title>
<link rel="stylesheet" href="../boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="Asio">
<link rel="up" href="../index.html" title="Asio">
<link rel="prev" href="reference/yield_context.html" title="yield_context">
<link rel="next" href="std_executors.html" title="Proposed Standard Executors">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="asio C++ library" width="250" height="60" src="../asio.png"></td></tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="reference/yield_context.html"><img src="../prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../home.png" alt="Home"></a><a accesskey="n" href="std_executors.html"><img src="../next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="asio.net_ts"></a><a class="link" href="net_ts.html" title="Networking TS compatibility">Networking TS compatibility</a>
</h2></div></div></div>
<p>
Asio now provides the interfaces and functionality specified by the "C++
Extensions for Networking" Technical Specification. In addition to access
via the usual Asio header files, this functionality may be accessed through
special headers that correspond to the header files defined in the TS. These
are listed in the table below:
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
Networking TS header
</p>
</th>
<th>
<p>
Asio header
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">buffer</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">buffer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">executor</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">executor</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">internet</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">internet</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">io_context</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">io_context</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">net</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">net</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">netfwd</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">netfwd</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">socket</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">socket</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">timer</span><span class="special">&gt;</span></code>
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">asio</span><span class="special">/</span><span class="identifier">ts</span><span class="special">/</span><span class="identifier">timer</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
</p>
</td>
</tr>
</tbody>
</table></div>
<p>
In some cases the new Networking TS compatible interfaces supersede older Asio
facilities. In these cases the older interfaces have been deprecated. The table
below shows the new Networking TS interfaces and the facilities they replace:
</p>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
<col>
</colgroup>
<thead><tr>
<th>
<p>
New interface
</p>
</th>
<th>
<p>
Old interface
</p>
</th>
<th>
<p>
Notes
</p>
</th>
</tr></thead>
<tbody>
<tr>
<td>
<p>
<a class="link" href="reference/io_context.html" title="io_context"><code class="computeroutput"><span class="identifier">io_context</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_service.html" title="io_service"><code class="computeroutput"><span class="identifier">io_service</span></code></a>
</p>
</td>
<td>
<p>
The name <code class="computeroutput"><span class="identifier">io_service</span></code>
is retained as a typedef.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/dispatch.html" title="dispatch"><code class="computeroutput"><span class="identifier">dispatch</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context/dispatch.html" title="io_context::dispatch"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">dispatch</span></code></a>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">dispatch</span></code> free
function can be used to submit functions to any <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
or <a class="link" href="reference/ExecutionContext.html" title="Execution context requirements">ExecutionContext</a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/post.html" title="post"><code class="computeroutput"><span class="identifier">post</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context/post.html" title="io_context::post"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">post</span></code></a>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">post</span></code> free function
can be used to submit functions to any <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
or <a class="link" href="reference/ExecutionContext.html" title="Execution context requirements">ExecutionContext</a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/defer.html" title="defer"><code class="computeroutput"><span class="identifier">defer</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context/post.html" title="io_context::post"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">post</span></code></a>
when the <a class="link" href="reference/asio_handler_is_continuation.html" title="asio_handler_is_continuation"><code class="computeroutput"><span class="identifier">asio_handler_is_continuation</span></code></a>
hook returns true
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">defer</span></code> free function
can be used to submit functions to any <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
or <a class="link" href="reference/ExecutionContext.html" title="Execution context requirements">ExecutionContext</a>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/io_context/poll.html" title="io_context::poll"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">poll</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context/poll.html" title="io_context::poll"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">poll</span></code></a>
overload that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
is not required.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/io_context/poll_one.html" title="io_context::poll_one"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">poll_one</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context/poll_one.html" title="io_context::poll_one"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">poll_one</span></code></a> overload that takes
<code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
is not required.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/io_context/run.html" title="io_context::run"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context/run.html" title="io_context::run"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">run</span></code></a>
overload that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
is not required.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/io_context/run_one.html" title="io_context::run_one"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run_one</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context/run_one.html" title="io_context::run_one"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">run_one</span></code></a>
overload that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
is not required.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/io_context/run_for.html" title="io_context::run_for"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run_for</span></code></a>,
<a class="link" href="reference/io_context/run_until.html" title="io_context::run_until"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run_until</span></code></a>, <a class="link" href="reference/io_context/run_one_for.html" title="io_context::run_one_for"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run_one_for</span></code></a>, and <a class="link" href="reference/io_context/run_one_until.html" title="io_context::run_one_until"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">run_one_until</span></code></a>
</p>
</td>
<td>
</td>
<td>
<p>
These functions add the ability to run an <code class="computeroutput"><span class="identifier">io_context</span></code>
for a limited time.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/io_context/restart.html" title="io_context::restart"><code class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span class="identifier">restart</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context/reset.html" title="io_context::reset"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">reset</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/io_context/io_context.html" title="io_context::io_context"><code class="computeroutput"><span class="identifier">io_context</span></code></a> constructor
<code class="computeroutput"><span class="identifier">concurrency_hint</span></code>
parameter is type <code class="computeroutput"><span class="keyword">int</span></code>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context/io_context.html" title="io_context::io_context"><code class="computeroutput"><span class="identifier">io_context</span></code></a> constructor
<code class="computeroutput"><span class="identifier">concurrency_hint</span></code>
parameter is type <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>
</p>
</td>
<td>
<p>
The old constructor has not been retained as a deprecated overload.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/execution_context.html" title="execution_context"><code class="computeroutput"><span class="identifier">execution_context</span></code></a>,
<a class="link" href="reference/execution_context__service.html" title="execution_context::service"><code class="computeroutput"><span class="identifier">execution_context</span><span class="special">::</span><span class="identifier">service</span></code></a>, and <a class="link" href="reference/execution_context__id.html" title="execution_context::id"><code class="computeroutput"><span class="identifier">execution_context</span><span class="special">::</span><span class="identifier">id</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context.html" title="io_context"><code class="computeroutput"><span class="identifier">io_service</span></code></a>,
<a class="link" href="reference/io_context__service.html" title="io_context::service"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">service</span></code></a>, and <a class="link" href="reference/execution_context__id.html" title="execution_context::id"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">id</span></code></a>
</p>
</td>
<td>
<p>
The service-related functionality has been moved to the <code class="computeroutput"><span class="identifier">execution_context</span></code> base class. This
may also be used as a base for creating custom execution contexts.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/execution_context/make_service.html" title="execution_context::make_service"><code class="computeroutput"><span class="identifier">make_service</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/execution_context/add_service.html" title="execution_context::add_service"><code class="computeroutput"><span class="identifier">add_service</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/strand.html" title="strand"><code class="computeroutput"><span class="identifier">strand</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context__strand.html" title="io_context::strand"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">strand</span></code></a>
</p>
</td>
<td>
<p>
This template works with any valid executor, and is itself a valid
executor.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/executor_work_guard.html" title="executor_work_guard"><code class="computeroutput"><span class="identifier">executor_work_guard</span></code></a> and
<a class="link" href="reference/make_work_guard.html" title="make_work_guard"><code class="computeroutput"><span class="identifier">make_work_guard</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context__work.html" title="io_context::work"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">work</span></code></a>
</p>
</td>
<td>
<p>
Work tracking is now covered by the <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
requirements. These templates work with any valid executor.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/executor_binder.html" title="executor_binder"><code class="computeroutput"><span class="identifier">executor_binder</span></code></a>
and <a class="link" href="reference/bind_executor.html" title="bind_executor"><code class="computeroutput"><span class="identifier">bind_executor</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/io_context/wrap.html" title="io_context::wrap"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">wrap</span></code></a>
and <a class="link" href="reference/io_context__strand/wrap.html" title="io_context::strand::wrap"><code class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span class="identifier">strand</span><span class="special">::</span><span class="identifier">wrap</span></code></a>
</p>
</td>
<td>
<p>
These templates work with any valid executor.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/async_result.html" title="async_result"><code class="computeroutput"><span class="identifier">async_result</span></code></a>
with <code class="computeroutput"><span class="identifier">CompletionToken</span></code>
and <code class="computeroutput"><span class="identifier">Signature</span></code> template
parameters
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">handler_type</span></code> and
single parameter <code class="computeroutput"><span class="identifier">async_result</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">async_result</span></code>
trait is now the single point of customisation for asynchronous operation
completion handlers and return type.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/associated_executor.html" title="associated_executor"><code class="computeroutput"><span class="identifier">associated_executor</span></code></a> and
<a class="link" href="reference/get_associated_executor.html" title="get_associated_executor"><code class="computeroutput"><span class="identifier">get_associated_executor</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/asio_handler_invoke.html" title="asio_handler_invoke"><code class="computeroutput"><span class="identifier">asio_handler_invoke</span></code></a>
</p>
</td>
<td>
<p>
The handler invocation hook has been replaced by the new <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
requirements and the associated executor traits.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/associated_allocator.html" title="associated_allocator"><code class="computeroutput"><span class="identifier">associated_allocator</span></code></a> and
<a class="link" href="reference/get_associated_allocator.html" title="get_associated_allocator"><code class="computeroutput"><span class="identifier">get_associated_allocator</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/asio_handler_allocate.html" title="asio_handler_allocate"><code class="computeroutput"><span class="identifier">asio_handler_allocate</span></code></a> and
<a class="link" href="reference/asio_handler_deallocate.html" title="asio_handler_deallocate"><code class="computeroutput"><span class="identifier">asio_handler_deallocate</span></code></a>
</p>
</td>
<td>
<p>
The handler allocation hooks have been replaced by the standard Allocator
requirements and the associated allocator traits.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/const_buffer/data.html" title="const_buffer::data"><code class="computeroutput"><span class="identifier">const_buffer</span><span class="special">::</span><span class="identifier">data</span></code></a>
and <a class="link" href="reference/mutable_buffer/data.html" title="mutable_buffer::data"><code class="computeroutput"><span class="identifier">mutable_buffer</span><span class="special">::</span><span class="identifier">data</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/buffer_cast.html" title="buffer_cast"><code class="computeroutput"><span class="identifier">buffer_cast</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/const_buffer/size.html" title="const_buffer::size"><code class="computeroutput"><span class="identifier">const_buffer</span><span class="special">::</span><span class="identifier">size</span></code></a>
and <a class="link" href="reference/mutable_buffer/size.html" title="mutable_buffer::size"><code class="computeroutput"><span class="identifier">mutable_buffer</span><span class="special">::</span><span class="identifier">size</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/buffer_size.html" title="buffer_size"><code class="computeroutput"><span class="identifier">buffer_size</span></code></a>
for single buffers
</p>
</td>
<td>
<p>
<code class="computeroutput"><span class="identifier">buffer_size</span></code> is not
deprecated for single buffers as <code class="computeroutput"><span class="identifier">const_buffer</span></code>
and <code class="computeroutput"><span class="identifier">mutable_buffer</span></code>
now satisfy the buffer sequence requirements
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/const_buffer.html" title="const_buffer"><code class="computeroutput"><span class="identifier">const_buffer</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/const_buffers_1.html" title="const_buffers_1"><code class="computeroutput"><span class="identifier">const_buffers_1</span></code></a>
</p>
</td>
<td>
<p>
The <a class="link" href="reference/ConstBufferSequence.html" title="Constant buffer sequence requirements">ConstBufferSequence</a>
requirements have been modified such that <code class="computeroutput"><span class="identifier">const_buffer</span></code>
now satisfies them.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/mutable_buffer.html" title="mutable_buffer"><code class="computeroutput"><span class="identifier">mutable_buffer</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/mutable_buffers_1.html" title="mutable_buffers_1"><code class="computeroutput"><span class="identifier">mutable_buffers_1</span></code></a>
</p>
</td>
<td>
<p>
The <a class="link" href="reference/MutableBufferSequence.html" title="Mutable buffer sequence requirements">MutableBufferSequence</a>
requirements have been modified such that <code class="computeroutput"><span class="identifier">mutable_buffer</span></code>
now satisfies them.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket/get_executor.html" title="basic_socket::get_executor"><code class="computeroutput"><span class="identifier">basic_socket</span><span class="special">::</span><span class="identifier">get_executor</span></code></a> (and corresponding
member for I/O objects such as timers, serial ports, etc.)
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_io_object/get_io_service.html" title="basic_io_object::get_io_service"><code class="computeroutput"><span class="identifier">basic_io_object</span><span class="special">::</span><span class="identifier">get_io_service</span></code></a>
</p>
</td>
<td>
<p>
Use <code class="computeroutput"><span class="identifier">get_executor</span><span class="special">().</span><span class="identifier">context</span><span class="special">()</span></code> to obtain the associated <code class="computeroutput"><span class="identifier">io_context</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/socket_base/max_listen_connections.html" title="socket_base::max_listen_connections"><code class="computeroutput"><span class="identifier">socket_base</span><span class="special">::</span><span class="identifier">max_listen_connections</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/socket_base/max_connections.html" title="socket_base::max_connections"><code class="computeroutput"><span class="identifier">socket_base</span><span class="special">::</span><span class="identifier">max_connections</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/socket_base/wait_type.html" title="socket_base::wait_type"><code class="computeroutput"><span class="identifier">socket_base</span><span class="special">::</span><span class="identifier">wait_type</span></code></a>, <a class="link" href="reference/basic_socket/wait.html" title="basic_socket::wait"><code class="computeroutput"><span class="identifier">basic_socket</span><span class="special">::</span><span class="identifier">wait</span></code></a>, <a class="link" href="reference/basic_socket/async_wait.html" title="basic_socket::async_wait"><code class="computeroutput"><span class="identifier">basic_socket</span><span class="special">::</span><span class="identifier">async_wait</span></code></a>, <a class="link" href="reference/basic_socket_acceptor/wait.html" title="basic_socket_acceptor::wait"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">wait</span></code></a>, and <a class="link" href="reference/basic_socket_acceptor/async_wait.html" title="basic_socket_acceptor::async_wait"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">async_wait</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/null_buffers.html" title="null_buffers"><code class="computeroutput"><span class="identifier">null_buffers</span></code></a>
</p>
</td>
<td>
<p>
Operations for reactive I/O.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_acceptor/accept.html" title="basic_socket_acceptor::accept"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">accept</span></code></a> returns a socket
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_acceptor/accept.html" title="basic_socket_acceptor::accept"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">accept</span></code></a> takes a socket by
reference
</p>
</td>
<td>
<p>
Uses move support so requires C++11 or later. To accept a connection
into a socket object on a different <code class="computeroutput"><span class="identifier">io_context</span></code>,
pass the destination context to <code class="computeroutput"><span class="identifier">accept</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_acceptor/async_accept.html" title="basic_socket_acceptor::async_accept"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">async_accept</span></code></a> passes socket
to handler
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_acceptor/async_accept.html" title="basic_socket_acceptor::async_accept"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span class="special">::</span><span class="identifier">async_accept</span></code></a> takes a socket
by reference
</p>
</td>
<td>
<p>
Uses move support so requires C++11 or later. To accept a connection
into a socket object on a different <code class="computeroutput"><span class="identifier">io_context</span></code>,
pass the destination context to <code class="computeroutput"><span class="identifier">async_accept</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/connect.html" title="connect"><code class="computeroutput"><span class="identifier">connect</span></code></a>
overloads that take a range
</p>
</td>
<td>
<p>
<a class="link" href="reference/connect.html" title="connect"><code class="computeroutput"><span class="identifier">connect</span></code></a>
overloads that take a single iterator
</p>
</td>
<td>
<p>
The <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> function now returns
a range. When the <code class="computeroutput"><span class="identifier">resolve</span></code>
function's result is passed directly to <code class="computeroutput"><span class="identifier">connect</span></code>,
the range overload will be selected.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/async_connect.html" title="async_connect"><code class="computeroutput"><span class="identifier">async_connect</span></code></a>
overloads that take a range
</p>
</td>
<td>
<p>
<a class="link" href="reference/async_connect.html" title="async_connect"><code class="computeroutput"><span class="identifier">async_connect</span></code></a>
overloads that take a single iterator
</p>
</td>
<td>
<p>
The <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> function now returns
a range. When the <code class="computeroutput"><span class="identifier">resolve</span></code>
function's result is passed directly to <code class="computeroutput"><span class="identifier">async_connect</span></code>,
the range overload will be selected.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_streambuf/duration.html" title="basic_socket_streambuf::duration"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">duration</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_streambuf/duration_type.html" title="basic_socket_streambuf::duration_type"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">duration_type</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_streambuf/time_point.html" title="basic_socket_streambuf::time_point"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">time_point</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_streambuf/time_type.html" title="basic_socket_streambuf::time_type"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">time_type</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_streambuf/expiry.html" title="basic_socket_streambuf::expiry"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">expiry</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_streambuf/expires_at.html" title="basic_socket_streambuf::expires_at"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">expires_at</span></code></a> and <a class="link" href="reference/basic_socket_streambuf/expires_from_now.html" title="basic_socket_streambuf::expires_from_now"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> getters
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_streambuf/expires_after.html" title="basic_socket_streambuf::expires_after"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">expires_after</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_streambuf/expires_from_now.html" title="basic_socket_streambuf::expires_from_now"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> setter
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_streambuf/error.html" title="basic_socket_streambuf::error"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">error</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_streambuf/puberror.html" title="basic_socket_streambuf::puberror"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span class="special">::</span><span class="identifier">puberror</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_iostream/duration.html" title="basic_socket_iostream::duration"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">duration</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_iostream/duration_type.html" title="basic_socket_iostream::duration_type"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">duration_type</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_iostream/time_point.html" title="basic_socket_iostream::time_point"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">time_point</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_iostream/time_type.html" title="basic_socket_iostream::time_type"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">time_type</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_iostream/expiry.html" title="basic_socket_iostream::expiry"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">expiry</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_iostream/expires_at.html" title="basic_socket_iostream::expires_at"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">expires_at</span></code></a> and <a class="link" href="reference/basic_socket_iostream/expires_from_now.html" title="basic_socket_iostream::expires_from_now"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> getters
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_socket_iostream/expires_after.html" title="basic_socket_iostream::expires_after"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">expires_after</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_socket_iostream/expires_from_now.html" title="basic_socket_iostream::expires_from_now"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> setter
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_waitable_timer/cancel.html" title="basic_waitable_timer::cancel"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">cancel</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_waitable_timer/cancel.html" title="basic_waitable_timer::cancel"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">cancel</span></code></a> overload that takes
<code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
is not required.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_waitable_timer/cancel_one.html" title="basic_waitable_timer::cancel_one"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">cancel_one</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_waitable_timer/cancel_one.html" title="basic_waitable_timer::cancel_one"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">cancel_one</span></code></a> overload that
takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
is not required.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_waitable_timer/expires_at.html" title="basic_waitable_timer::expires_at"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_at</span></code></a> setter
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_waitable_timer/expires_at.html" title="basic_waitable_timer::expires_at"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_at</span></code></a> setter that takes
<code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
is not required.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_waitable_timer/expiry.html" title="basic_waitable_timer::expiry"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expiry</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_waitable_timer/expires_at.html" title="basic_waitable_timer::expires_at"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_at</span></code></a> and <a class="link" href="reference/basic_waitable_timer/expires_from_now.html" title="basic_waitable_timer::expires_from_now"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> getters
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/basic_waitable_timer/expires_after.html" title="basic_waitable_timer::expires_after"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_after</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/basic_waitable_timer/expires_from_now.html" title="basic_waitable_timer::expires_from_now"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span class="special">::</span><span class="identifier">expires_from_now</span></code></a> setter
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__address/make_address.html" title="ip::address::make_address"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">make_address</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__address/from_string.html" title="ip::address::from_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address</span><span class="special">::</span><span class="identifier">from_string</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__address_v4/make_address_v4.html" title="ip::address_v4::make_address_v4"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">make_address_v4</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__address_v4/from_string.html" title="ip::address_v4::from_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">from_string</span></code></a> and <a class="link" href="reference/ip__address_v6/to_v4.html" title="ip::address_v6::to_v4"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">to_v4</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__address_v6/make_address_v6.html" title="ip::address_v6::make_address_v6"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">make_address_v6</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__address_v6/from_string.html" title="ip::address_v6::from_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">from_string</span></code></a> and <a class="link" href="reference/ip__address_v6/v4_mapped.html" title="ip::address_v6::v4_mapped"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">v4_mapped</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__address/to_string.html" title="ip::address::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address</span><span class="special">::</span><span class="identifier">to_string</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__address/to_string.html" title="ip::address::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address</span><span class="special">::</span><span class="identifier">to_string</span></code></a> that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
is not required.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__address_v4/to_string.html" title="ip::address_v4::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">to_string</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__address_v4/to_string.html" title="ip::address_v4::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">to_string</span></code></a> that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
is not required.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__address_v6/to_string.html" title="ip::address_v6::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">to_string</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__address_v6/to_string.html" title="ip::address_v6::to_string"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">to_string</span></code></a> that takes <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
is not required.
</p>
</td>
</tr>
<tr>
<td>
<p>
No replacement
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__address_v6/is_v4_compatible.html" title="ip::address_v6::is_v4_compatible"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">is_v4_compatible</span></code></a> and <a class="link" href="reference/ip__address_v6/v4_compatible.html" title="ip::address_v6::v4_compatible"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span class="special">::</span><span class="identifier">v4_compatible</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__network_v4.html" title="ip::network_v4"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">network_v4</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__address_v4/broadcast.html" title="ip::address_v4::broadcast"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">broadcast</span></code></a>, <a class="link" href="reference/ip__address_v4/is_class_a.html" title="ip::address_v4::is_class_a"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">is_class_a</span></code></a>, <a class="link" href="reference/ip__address_v4/is_class_b.html" title="ip::address_v4::is_class_b"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">is_class_b</span></code></a>, <a class="link" href="reference/ip__address_v4/is_class_c.html" title="ip::address_v4::is_class_c"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">is_class_c</span></code></a>, and <a class="link" href="reference/ip__address_v4/netmask.html" title="ip::address_v4::netmask"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span class="special">::</span><span class="identifier">netmask</span></code></a>
</p>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">network_v4</span></code> class
adds the ability to manipulate IPv4 network addresses using CIDR
notation.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__network_v6.html" title="ip::network_v6"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">network_v6</span></code></a>
</p>
</td>
<td>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">network_v6</span></code> class
adds the ability to manipulate IPv6 network addresses using CIDR
notation.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__basic_address_iterator_lt__address_v4__gt_.html" title="ip::basic_address_iterator&lt; address_v4 &gt;"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4_iterator</span></code></a> and
<a class="link" href="reference/ip__basic_address_range_lt__address_v4__gt_.html" title="ip::basic_address_range&lt; address_v4 &gt;"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4_range</span></code></a>
</p>
</td>
<td>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4_iterator</span></code> and <code class="computeroutput"><span class="identifier">address_v4_range</span></code> classes add the
ability to iterate over all, or a subset of, IPv4 addresses.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__basic_address_iterator_lt__address_v6__gt_.html" title="ip::basic_address_iterator&lt; address_v6 &gt;"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6_iterator</span></code></a> and
<a class="link" href="reference/ip__basic_address_range_lt__address_v6__gt_.html" title="ip::basic_address_range&lt; address_v6 &gt;"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6_range</span></code></a>
</p>
</td>
<td>
</td>
<td>
<p>
The <code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6_iterator</span></code> and <code class="computeroutput"><span class="identifier">address_v6_range</span></code> classes add the
ability to iterate over all, or a subset of, IPv6 addresses.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__basic_resolver/results_type.html" title="ip::basic_resolver::results_type"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">results_type</span></code></a>
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__basic_resolver/iterator.html" title="ip::basic_resolver::iterator"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">iterator</span></code></a>
</p>
</td>
<td>
<p>
Resolvers now produce ranges rather than single iterators.
</p>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> overloads taking
hostname and service as arguments
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> overloads taking
a <a class="link" href="reference/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</span><span class="special">::</span><span class="identifier">query</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> returns a range
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">resolve</span></code></a> returns a single
iterator
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">async_resolve</span></code></a> overloads
taking hostname and service as arguments
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">async_resolve</span></code></a> overloads
taking a <a class="link" href="reference/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</span><span class="special">::</span><span class="identifier">query</span></code></a>
</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>
<a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">async_resolve</span></code></a> calls the
handler with a range
</p>
</td>
<td>
<p>
<a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span class="special">::</span><span class="identifier">async_resolve</span></code></a> calls the
handler with a single iterator
</p>
</td>
<td>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="copyright-footer">Copyright © 2003-2023 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>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="reference/yield_context.html"><img src="../prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../home.png" alt="Home"></a><a accesskey="n" href="std_executors.html"><img src="../next.png" alt="Next"></a>
</div>
</body>
</html>