• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
4<title>Networking TS compatibility</title>
5<link rel="stylesheet" href="../../../doc/src/boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="../boost_asio.html" title="Boost.Asio">
8<link rel="up" href="../boost_asio.html" title="Boost.Asio">
9<link rel="prev" href="reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/value.html" title="boost::system::is_error_code_enum&lt; boost::asio::ssl::error::stream_errors &gt;::value">
10<link rel="next" href="std_executors.html" title="Proposed Standard Executors">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%"><tr>
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
15<td align="center"><a href="../../../index.html">Home</a></td>
16<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19<td align="center"><a href="../../../more/index.htm">More</a></td>
20</tr></table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/value.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_asio.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="std_executors.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
24</div>
25<div class="section">
26<div class="titlepage"><div><div><h2 class="title" style="clear: both">
27<a name="boost_asio.net_ts"></a><a class="link" href="net_ts.html" title="Networking TS compatibility">Networking TS compatibility</a>
28</h2></div></div></div>
29<p>
30      Boost.Asio now provides the interfaces and functionality specified by the "C++
31      Extensions for Networking" Technical Specification. In addition to access
32      via the usual Boost.Asio header files, this functionality may be accessed through
33      special headers that correspond to the header files defined in the TS. These
34      are listed in the table below:
35    </p>
36<div class="informaltable"><table class="table">
37<colgroup>
38<col>
39<col>
40</colgroup>
41<thead><tr>
42<th>
43              <p>
44                Networking TS header
45              </p>
46            </th>
47<th>
48              <p>
49                Boost.Asio header
50              </p>
51            </th>
52</tr></thead>
53<tbody>
54<tr>
55<td>
56              <p>
57                <code class="computeroutput">#include &lt;buffer&gt;</code>
58              </p>
59            </td>
60<td>
61              <p>
62                <code class="computeroutput">#include &lt;boost/asio/ts/buffer.hpp&gt;</code>
63              </p>
64            </td>
65</tr>
66<tr>
67<td>
68              <p>
69                <code class="computeroutput">#include &lt;executor&gt;</code>
70              </p>
71            </td>
72<td>
73              <p>
74                <code class="computeroutput">#include &lt;boost/asio/ts/executor.hpp&gt;</code>
75              </p>
76            </td>
77</tr>
78<tr>
79<td>
80              <p>
81                <code class="computeroutput">#include &lt;internet&gt;</code>
82              </p>
83            </td>
84<td>
85              <p>
86                <code class="computeroutput">#include &lt;boost/asio/ts/internet.hpp&gt;</code>
87              </p>
88            </td>
89</tr>
90<tr>
91<td>
92              <p>
93                <code class="computeroutput">#include &lt;io_context&gt;</code>
94              </p>
95            </td>
96<td>
97              <p>
98                <code class="computeroutput">#include &lt;boost/asio/ts/io_context.hpp&gt;</code>
99              </p>
100            </td>
101</tr>
102<tr>
103<td>
104              <p>
105                <code class="computeroutput">#include &lt;net&gt;</code>
106              </p>
107            </td>
108<td>
109              <p>
110                <code class="computeroutput">#include &lt;boost/asio/ts/net.hpp&gt;</code>
111              </p>
112            </td>
113</tr>
114<tr>
115<td>
116              <p>
117                <code class="computeroutput">#include &lt;netfwd&gt;</code>
118              </p>
119            </td>
120<td>
121              <p>
122                <code class="computeroutput">#include &lt;boost/asio/ts/netfwd.hpp&gt;</code>
123              </p>
124            </td>
125</tr>
126<tr>
127<td>
128              <p>
129                <code class="computeroutput">#include &lt;socket&gt;</code>
130              </p>
131            </td>
132<td>
133              <p>
134                <code class="computeroutput">#include &lt;boost/asio/ts/socket.hpp&gt;</code>
135              </p>
136            </td>
137</tr>
138<tr>
139<td>
140              <p>
141                <code class="computeroutput">#include &lt;timer&gt;</code>
142              </p>
143            </td>
144<td>
145              <p>
146                <code class="computeroutput">#include &lt;boost/asio/ts/timer.hpp&gt;</code>
147              </p>
148            </td>
149</tr>
150</tbody>
151</table></div>
152<p>
153      In some cases the new Networking TS compatible interfaces supersede older Boost.Asio
154      facilities. In these cases the older interfaces have been deprecated. The table
155      below shows the new Networking TS interfaces and the facilities they replace:
156    </p>
157<div class="informaltable"><table class="table">
158<colgroup>
159<col>
160<col>
161<col>
162</colgroup>
163<thead><tr>
164<th>
165              <p>
166                New interface
167              </p>
168            </th>
169<th>
170              <p>
171                Old interface
172              </p>
173            </th>
174<th>
175              <p>
176                Notes
177              </p>
178            </th>
179</tr></thead>
180<tbody>
181<tr>
182<td>
183              <p>
184                <a class="link" href="reference/io_context.html" title="io_context"><code class="computeroutput">io_context</code></a>
185              </p>
186            </td>
187<td>
188              <p>
189                <a class="link" href="reference/io_service.html" title="io_service"><code class="computeroutput">io_service</code></a>
190              </p>
191            </td>
192<td>
193              <p>
194                The name <code class="computeroutput">io_service</code> is retained as a typedef.
195              </p>
196            </td>
197</tr>
198<tr>
199<td>
200              <p>
201                <a class="link" href="reference/dispatch.html" title="dispatch"><code class="computeroutput">dispatch</code></a>
202              </p>
203            </td>
204<td>
205              <p>
206                <a class="link" href="reference/io_context/dispatch.html" title="io_context::dispatch"><code class="computeroutput">io_service::dispatch</code></a>
207              </p>
208            </td>
209<td>
210              <p>
211                The <code class="computeroutput">dispatch</code> free function can be used to submit functions
212                to any <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
213                or <a class="link" href="reference/ExecutionContext.html" title="Execution context requirements">ExecutionContext</a>.
214              </p>
215            </td>
216</tr>
217<tr>
218<td>
219              <p>
220                <a class="link" href="reference/post.html" title="post"><code class="computeroutput">post</code></a>
221              </p>
222            </td>
223<td>
224              <p>
225                <a class="link" href="reference/io_context/post.html" title="io_context::post"><code class="computeroutput">io_service::post</code></a>
226              </p>
227            </td>
228<td>
229              <p>
230                The <code class="computeroutput">post</code> free function can be used to submit functions
231                to any <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
232                or <a class="link" href="reference/ExecutionContext.html" title="Execution context requirements">ExecutionContext</a>.
233              </p>
234            </td>
235</tr>
236<tr>
237<td>
238              <p>
239                <a class="link" href="reference/defer.html" title="defer"><code class="computeroutput">defer</code></a>
240              </p>
241            </td>
242<td>
243              <p>
244                <a class="link" href="reference/io_context/post.html" title="io_context::post"><code class="computeroutput">io_service::post</code></a>
245                when the <a class="link" href="reference/asio_handler_is_continuation.html" title="asio_handler_is_continuation"><code class="computeroutput">asio_handler_is_continuation</code></a>
246                hook returns true
247              </p>
248            </td>
249<td>
250              <p>
251                The <code class="computeroutput">defer</code> free function can be used to submit functions
252                to any <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
253                or <a class="link" href="reference/ExecutionContext.html" title="Execution context requirements">ExecutionContext</a>.
254              </p>
255            </td>
256</tr>
257<tr>
258<td>
259              <p>
260                <a class="link" href="reference/io_context/poll.html" title="io_context::poll"><code class="computeroutput">io_context::poll</code></a>
261              </p>
262            </td>
263<td>
264              <p>
265                <a class="link" href="reference/io_context/poll.html" title="io_context::poll"><code class="computeroutput">io_service::poll</code></a>
266                overload that takes <code class="computeroutput">error_code&amp;</code>
267              </p>
268            </td>
269<td>
270              <p>
271                The <code class="computeroutput">error_code</code> overload is not required.
272              </p>
273            </td>
274</tr>
275<tr>
276<td>
277              <p>
278                <a class="link" href="reference/io_context/poll_one.html" title="io_context::poll_one"><code class="computeroutput">io_context::poll_one</code></a>
279              </p>
280            </td>
281<td>
282              <p>
283                <a class="link" href="reference/io_context/poll_one.html" title="io_context::poll_one"><code class="computeroutput">io_service::poll_one</code></a>
284                overload that takes <code class="computeroutput">error_code&amp;</code>
285              </p>
286            </td>
287<td>
288              <p>
289                The <code class="computeroutput">error_code</code> overload is not required.
290              </p>
291            </td>
292</tr>
293<tr>
294<td>
295              <p>
296                <a class="link" href="reference/io_context/run.html" title="io_context::run"><code class="computeroutput">io_context::run</code></a>
297              </p>
298            </td>
299<td>
300              <p>
301                <a class="link" href="reference/io_context/run.html" title="io_context::run"><code class="computeroutput">io_service::run</code></a>
302                overload that takes <code class="computeroutput">error_code&amp;</code>
303              </p>
304            </td>
305<td>
306              <p>
307                The <code class="computeroutput">error_code</code> overload is not required.
308              </p>
309            </td>
310</tr>
311<tr>
312<td>
313              <p>
314                <a class="link" href="reference/io_context/run_one.html" title="io_context::run_one"><code class="computeroutput">io_context::run_one</code></a>
315              </p>
316            </td>
317<td>
318              <p>
319                <a class="link" href="reference/io_context/run_one.html" title="io_context::run_one"><code class="computeroutput">io_service::run_one</code></a>
320                overload that takes <code class="computeroutput">error_code&amp;</code>
321              </p>
322            </td>
323<td>
324              <p>
325                The <code class="computeroutput">error_code</code> overload is not required.
326              </p>
327            </td>
328</tr>
329<tr>
330<td>
331              <p>
332                <a class="link" href="reference/io_context/run_for.html" title="io_context::run_for"><code class="computeroutput">io_context::run_for</code></a>,
333                <a class="link" href="reference/io_context/run_until.html" title="io_context::run_until"><code class="computeroutput">io_context::run_until</code></a>,
334                <a class="link" href="reference/io_context/run_one_for.html" title="io_context::run_one_for"><code class="computeroutput">io_context::run_one_for</code></a>,
335                and <a class="link" href="reference/io_context/run_one_until.html" title="io_context::run_one_until"><code class="computeroutput">io_context::run_one_until</code></a>
336              </p>
337            </td>
338<td>
339            </td>
340<td>
341              <p>
342                These functions add the ability to run an <code class="computeroutput">io_context</code>
343                for a limited time.
344              </p>
345            </td>
346</tr>
347<tr>
348<td>
349              <p>
350                <a class="link" href="reference/io_context/restart.html" title="io_context::restart"><code class="computeroutput">io_context::restart</code></a>
351              </p>
352            </td>
353<td>
354              <p>
355                <a class="link" href="reference/io_context/reset.html" title="io_context::reset"><code class="computeroutput">io_service::reset</code></a>
356              </p>
357            </td>
358<td>
359            </td>
360</tr>
361<tr>
362<td>
363              <p>
364                <a class="link" href="reference/io_context/io_context.html" title="io_context::io_context"><code class="computeroutput">io_context</code></a>
365                constructor <code class="computeroutput">concurrency_hint</code> parameter is type <code class="computeroutput">int</code>
366              </p>
367            </td>
368<td>
369              <p>
370                <a class="link" href="reference/io_context/io_context.html" title="io_context::io_context"><code class="computeroutput">io_context</code></a>
371                constructor <code class="computeroutput">concurrency_hint</code> parameter is type <code class="computeroutput">std::size_t</code>
372              </p>
373            </td>
374<td>
375              <p>
376                The old constructor has not been retained as a deprecated overload.
377              </p>
378            </td>
379</tr>
380<tr>
381<td>
382              <p>
383                <a class="link" href="reference/execution_context.html" title="execution_context"><code class="computeroutput">execution_context</code></a>,
384                <a class="link" href="reference/execution_context__service.html" title="execution_context::service"><code class="computeroutput">execution_context::service</code></a>,
385                and <a class="link" href="reference/execution_context__id.html" title="execution_context::id"><code class="computeroutput">execution_context::id</code></a>
386              </p>
387            </td>
388<td>
389              <p>
390                <a class="link" href="reference/io_context.html" title="io_context"><code class="computeroutput">io_service</code></a>,
391                <a class="link" href="reference/io_context__service.html" title="io_context::service"><code class="computeroutput">io_service::service</code></a>,
392                and <a class="link" href="reference/execution_context__id.html" title="execution_context::id"><code class="computeroutput">io_service::id</code></a>
393              </p>
394            </td>
395<td>
396              <p>
397                The service-related functionality has been moved to the <code class="computeroutput">execution_context</code>
398                base class. This may also be used as a base for creating custom execution
399                contexts.
400              </p>
401            </td>
402</tr>
403<tr>
404<td>
405              <p>
406                <a class="link" href="reference/execution_context/make_service.html" title="execution_context::make_service"><code class="computeroutput">make_service</code></a>
407              </p>
408            </td>
409<td>
410              <p>
411                <a class="link" href="reference/execution_context/add_service.html" title="execution_context::add_service"><code class="computeroutput">add_service</code></a>
412              </p>
413            </td>
414<td>
415            </td>
416</tr>
417<tr>
418<td>
419              <p>
420                <a class="link" href="reference/strand.html" title="strand"><code class="computeroutput">strand</code></a>
421              </p>
422            </td>
423<td>
424              <p>
425                <a class="link" href="reference/io_context__strand.html" title="io_context::strand"><code class="computeroutput">io_service::strand</code></a>
426              </p>
427            </td>
428<td>
429              <p>
430                This template works with any valid executor, and is itself a valid
431                executor.
432              </p>
433            </td>
434</tr>
435<tr>
436<td>
437              <p>
438                <a class="link" href="reference/executor_work_guard.html" title="executor_work_guard"><code class="computeroutput">executor_work_guard</code></a>
439                and <a class="link" href="reference/make_work_guard.html" title="make_work_guard"><code class="computeroutput">make_work_guard</code></a>
440              </p>
441            </td>
442<td>
443              <p>
444                <a class="link" href="reference/io_context__work.html" title="io_context::work"><code class="computeroutput">io_service::work</code></a>
445              </p>
446            </td>
447<td>
448              <p>
449                Work tracking is now covered by the <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
450                requirements. These templates work with any valid executor.
451              </p>
452            </td>
453</tr>
454<tr>
455<td>
456              <p>
457                <a class="link" href="reference/executor_binder.html" title="executor_binder"><code class="computeroutput">executor_binder</code></a>
458                and <a class="link" href="reference/bind_executor.html" title="bind_executor"><code class="computeroutput">bind_executor</code></a>
459              </p>
460            </td>
461<td>
462              <p>
463                <a class="link" href="reference/io_context/wrap.html" title="io_context::wrap"><code class="computeroutput">io_service::wrap</code></a>
464                and <a class="link" href="reference/io_context__strand/wrap.html" title="io_context::strand::wrap"><code class="computeroutput">io_service::strand::wrap</code></a>
465              </p>
466            </td>
467<td>
468              <p>
469                These templates work with any valid executor.
470              </p>
471            </td>
472</tr>
473<tr>
474<td>
475              <p>
476                <a class="link" href="reference/async_result.html" title="async_result"><code class="computeroutput">async_result</code></a>
477                with <code class="computeroutput">CompletionToken</code> and <code class="computeroutput">Signature</code> template
478                parameters
479              </p>
480            </td>
481<td>
482              <p>
483                <code class="computeroutput">handler_type</code> and single parameter <code class="computeroutput">async_result</code>
484              </p>
485            </td>
486<td>
487              <p>
488                The <code class="computeroutput">async_result</code> trait is now the single point of customisation
489                for asynchronous operation completion handlers and return type.
490              </p>
491            </td>
492</tr>
493<tr>
494<td>
495              <p>
496                <a class="link" href="reference/associated_executor.html" title="associated_executor"><code class="computeroutput">associated_executor</code></a>
497                and <a class="link" href="reference/get_associated_executor.html" title="get_associated_executor"><code class="computeroutput">get_associated_executor</code></a>
498              </p>
499            </td>
500<td>
501              <p>
502                <a class="link" href="reference/asio_handler_invoke.html" title="asio_handler_invoke"><code class="computeroutput">asio_handler_invoke</code></a>
503              </p>
504            </td>
505<td>
506              <p>
507                The handler invocation hook has been replaced by the new <a class="link" href="reference/Executor1.html" title="Executor requirements">Executor</a>
508                requirements and the associated executor traits.
509              </p>
510            </td>
511</tr>
512<tr>
513<td>
514              <p>
515                <a class="link" href="reference/associated_allocator.html" title="associated_allocator"><code class="computeroutput">associated_allocator</code></a>
516                and <a class="link" href="reference/get_associated_allocator.html" title="get_associated_allocator"><code class="computeroutput">get_associated_allocator</code></a>
517              </p>
518            </td>
519<td>
520              <p>
521                <a class="link" href="reference/asio_handler_allocate.html" title="asio_handler_allocate"><code class="computeroutput">asio_handler_allocate</code></a>
522                and <a class="link" href="reference/asio_handler_deallocate.html" title="asio_handler_deallocate"><code class="computeroutput">asio_handler_deallocate</code></a>
523              </p>
524            </td>
525<td>
526              <p>
527                The handler allocation hooks have been replaced by the standard Allocator
528                requirements and the associated allocator traits.
529              </p>
530            </td>
531</tr>
532<tr>
533<td>
534              <p>
535                <a class="link" href="reference/const_buffer/data.html" title="const_buffer::data"><code class="computeroutput">const_buffer::data</code></a>
536                and <a class="link" href="reference/mutable_buffer/data.html" title="mutable_buffer::data"><code class="computeroutput">mutable_buffer::data</code></a>
537              </p>
538            </td>
539<td>
540              <p>
541                <a class="link" href="reference/buffer_cast.html" title="buffer_cast"><code class="computeroutput">buffer_cast</code></a>
542              </p>
543            </td>
544<td>
545            </td>
546</tr>
547<tr>
548<td>
549              <p>
550                <a class="link" href="reference/const_buffer/size.html" title="const_buffer::size"><code class="computeroutput">const_buffer::size</code></a>
551                and <a class="link" href="reference/mutable_buffer/size.html" title="mutable_buffer::size"><code class="computeroutput">mutable_buffer::size</code></a>
552              </p>
553            </td>
554<td>
555              <p>
556                <a class="link" href="reference/buffer_size.html" title="buffer_size"><code class="computeroutput">buffer_size</code></a>
557                for single buffers
558              </p>
559            </td>
560<td>
561              <p>
562                <code class="computeroutput">buffer_size</code> is not deprecated for single buffers as
563                <code class="computeroutput">const_buffer</code> and <code class="computeroutput">mutable_buffer</code> now satisfy
564                the buffer sequence requirements
565              </p>
566            </td>
567</tr>
568<tr>
569<td>
570              <p>
571                <a class="link" href="reference/const_buffer.html" title="const_buffer"><code class="computeroutput">const_buffer</code></a>
572              </p>
573            </td>
574<td>
575              <p>
576                <a class="link" href="reference/const_buffers_1.html" title="const_buffers_1"><code class="computeroutput">const_buffers_1</code></a>
577              </p>
578            </td>
579<td>
580              <p>
581                The <a class="link" href="reference/ConstBufferSequence.html" title="Constant buffer sequence requirements">ConstBufferSequence</a>
582                requirements have been modified such that <code class="computeroutput">const_buffer</code>
583                now satisfies them.
584              </p>
585            </td>
586</tr>
587<tr>
588<td>
589              <p>
590                <a class="link" href="reference/mutable_buffer.html" title="mutable_buffer"><code class="computeroutput">mutable_buffer</code></a>
591              </p>
592            </td>
593<td>
594              <p>
595                <a class="link" href="reference/mutable_buffers_1.html" title="mutable_buffers_1"><code class="computeroutput">mutable_buffers_1</code></a>
596              </p>
597            </td>
598<td>
599              <p>
600                The <a class="link" href="reference/MutableBufferSequence.html" title="Mutable buffer sequence requirements">MutableBufferSequence</a>
601                requirements have been modified such that <code class="computeroutput">mutable_buffer</code>
602                now satisfies them.
603              </p>
604            </td>
605</tr>
606<tr>
607<td>
608              <p>
609                <a class="link" href="reference/basic_socket/get_executor.html" title="basic_socket::get_executor"><code class="computeroutput">basic_socket::get_executor</code></a>
610                (and corresponding member for I/O objects such as timers, serial
611                ports, etc.)
612              </p>
613            </td>
614<td>
615              <p>
616                <a class="link" href="reference/basic_io_object/get_io_service.html" title="basic_io_object::get_io_service"><code class="computeroutput">basic_io_object::get_io_service</code></a>
617              </p>
618            </td>
619<td>
620              <p>
621                Use <code class="computeroutput">get_executor().context()</code> to obtain the associated
622                <code class="computeroutput">io_context</code>.
623              </p>
624            </td>
625</tr>
626<tr>
627<td>
628              <p>
629                <a class="link" href="reference/socket_base/max_listen_connections.html" title="socket_base::max_listen_connections"><code class="computeroutput">socket_base::max_listen_connections</code></a>
630              </p>
631            </td>
632<td>
633              <p>
634                <a class="link" href="reference/socket_base/max_connections.html" title="socket_base::max_connections"><code class="computeroutput">socket_base::max_connections</code></a>
635              </p>
636            </td>
637<td>
638            </td>
639</tr>
640<tr>
641<td>
642              <p>
643                <a class="link" href="reference/socket_base/wait_type.html" title="socket_base::wait_type"><code class="computeroutput">socket_base::wait_type</code></a>,
644                <a class="link" href="reference/basic_socket/wait.html" title="basic_socket::wait"><code class="computeroutput">basic_socket::wait</code></a>,
645                <a class="link" href="reference/basic_socket/async_wait.html" title="basic_socket::async_wait"><code class="computeroutput">basic_socket::async_wait</code></a>,
646                <a class="link" href="reference/basic_socket_acceptor/wait.html" title="basic_socket_acceptor::wait"><code class="computeroutput">basic_socket_acceptor::wait</code></a>,
647                and <a class="link" href="reference/basic_socket_acceptor/async_wait.html" title="basic_socket_acceptor::async_wait"><code class="computeroutput">basic_socket_acceptor::async_wait</code></a>
648              </p>
649            </td>
650<td>
651              <p>
652                <a class="link" href="reference/null_buffers.html" title="null_buffers"><code class="computeroutput">null_buffers</code></a>
653              </p>
654            </td>
655<td>
656              <p>
657                Operations for reactive I/O.
658              </p>
659            </td>
660</tr>
661<tr>
662<td>
663              <p>
664                <a class="link" href="reference/basic_socket_acceptor/accept.html" title="basic_socket_acceptor::accept"><code class="computeroutput">basic_socket_acceptor::accept</code></a>
665                returns a socket
666              </p>
667            </td>
668<td>
669              <p>
670                <a class="link" href="reference/basic_socket_acceptor/accept.html" title="basic_socket_acceptor::accept"><code class="computeroutput">basic_socket_acceptor::accept</code></a>
671                takes a socket by reference
672              </p>
673            </td>
674<td>
675              <p>
676                Uses move support so requires C++11 or later. To accept a connection
677                into a socket object on a different <code class="computeroutput">io_context</code>, pass
678                the destination context to <code class="computeroutput">accept</code>.
679              </p>
680            </td>
681</tr>
682<tr>
683<td>
684              <p>
685                <a class="link" href="reference/basic_socket_acceptor/async_accept.html" title="basic_socket_acceptor::async_accept"><code class="computeroutput">basic_socket_acceptor::async_accept</code></a>
686                passes socket to handler
687              </p>
688            </td>
689<td>
690              <p>
691                <a class="link" href="reference/basic_socket_acceptor/async_accept.html" title="basic_socket_acceptor::async_accept"><code class="computeroutput">basic_socket_acceptor::async_accept</code></a>
692                takes a socket by reference
693              </p>
694            </td>
695<td>
696              <p>
697                Uses move support so requires C++11 or later. To accept a connection
698                into a socket object on a different <code class="computeroutput">io_context</code>, pass
699                the destination context to <code class="computeroutput">async_accept</code>.
700              </p>
701            </td>
702</tr>
703<tr>
704<td>
705              <p>
706                <a class="link" href="reference/connect.html" title="connect"><code class="computeroutput">connect</code></a>
707                overloads that take a range
708              </p>
709            </td>
710<td>
711              <p>
712                <a class="link" href="reference/connect.html" title="connect"><code class="computeroutput">connect</code></a>
713                overloads that take a single iterator
714              </p>
715            </td>
716<td>
717              <p>
718                The <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput">ip::basic_resolver::resolve</code></a>
719                function now returns a range. When the <code class="computeroutput">resolve</code> function's
720                result is passed directly to <code class="computeroutput">connect</code>, the range overload
721                will be selected.
722              </p>
723            </td>
724</tr>
725<tr>
726<td>
727              <p>
728                <a class="link" href="reference/async_connect.html" title="async_connect"><code class="computeroutput">async_connect</code></a>
729                overloads that take a range
730              </p>
731            </td>
732<td>
733              <p>
734                <a class="link" href="reference/async_connect.html" title="async_connect"><code class="computeroutput">async_connect</code></a>
735                overloads that take a single iterator
736              </p>
737            </td>
738<td>
739              <p>
740                The <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput">ip::basic_resolver::resolve</code></a>
741                function now returns a range. When the <code class="computeroutput">resolve</code> function's
742                result is passed directly to <code class="computeroutput">async_connect</code>, the range
743                overload will be selected.
744              </p>
745            </td>
746</tr>
747<tr>
748<td>
749              <p>
750                <a class="link" href="reference/basic_socket_streambuf/duration.html" title="basic_socket_streambuf::duration"><code class="computeroutput">basic_socket_streambuf::duration</code></a>
751              </p>
752            </td>
753<td>
754              <p>
755                <a class="link" href="reference/basic_socket_streambuf/duration_type.html" title="basic_socket_streambuf::duration_type"><code class="computeroutput">basic_socket_streambuf::duration_type</code></a>
756              </p>
757            </td>
758<td>
759            </td>
760</tr>
761<tr>
762<td>
763              <p>
764                <a class="link" href="reference/basic_socket_streambuf/time_point.html" title="basic_socket_streambuf::time_point"><code class="computeroutput">basic_socket_streambuf::time_point</code></a>
765              </p>
766            </td>
767<td>
768              <p>
769                <a class="link" href="reference/basic_socket_streambuf/time_type.html" title="basic_socket_streambuf::time_type"><code class="computeroutput">basic_socket_streambuf::time_type</code></a>
770              </p>
771            </td>
772<td>
773            </td>
774</tr>
775<tr>
776<td>
777              <p>
778                <a class="link" href="reference/basic_socket_streambuf/expiry.html" title="basic_socket_streambuf::expiry"><code class="computeroutput">basic_socket_streambuf::expiry</code></a>
779              </p>
780            </td>
781<td>
782              <p>
783                <a class="link" href="reference/basic_socket_streambuf/expires_at.html" title="basic_socket_streambuf::expires_at"><code class="computeroutput">basic_socket_streambuf::expires_at</code></a>
784                and <a class="link" href="reference/basic_socket_streambuf/expires_from_now.html" title="basic_socket_streambuf::expires_from_now"><code class="computeroutput">basic_socket_streambuf::expires_from_now</code></a>
785                getters
786              </p>
787            </td>
788<td>
789            </td>
790</tr>
791<tr>
792<td>
793              <p>
794                <a class="link" href="reference/basic_socket_streambuf/expires_after.html" title="basic_socket_streambuf::expires_after"><code class="computeroutput">basic_socket_streambuf::expires_after</code></a>
795              </p>
796            </td>
797<td>
798              <p>
799                <a class="link" href="reference/basic_socket_streambuf/expires_from_now.html" title="basic_socket_streambuf::expires_from_now"><code class="computeroutput">basic_socket_streambuf::expires_from_now</code></a>
800                setter
801              </p>
802            </td>
803<td>
804            </td>
805</tr>
806<tr>
807<td>
808              <p>
809                <a class="link" href="reference/basic_socket_streambuf/error.html" title="basic_socket_streambuf::error"><code class="computeroutput">basic_socket_streambuf::error</code></a>
810              </p>
811            </td>
812<td>
813              <p>
814                <a class="link" href="reference/basic_socket_streambuf/puberror.html" title="basic_socket_streambuf::puberror"><code class="computeroutput">basic_socket_streambuf::puberror</code></a>
815              </p>
816            </td>
817<td>
818            </td>
819</tr>
820<tr>
821<td>
822              <p>
823                <a class="link" href="reference/basic_socket_iostream/duration.html" title="basic_socket_iostream::duration"><code class="computeroutput">basic_socket_iostream::duration</code></a>
824              </p>
825            </td>
826<td>
827              <p>
828                <a class="link" href="reference/basic_socket_iostream/duration_type.html" title="basic_socket_iostream::duration_type"><code class="computeroutput">basic_socket_iostream::duration_type</code></a>
829              </p>
830            </td>
831<td>
832            </td>
833</tr>
834<tr>
835<td>
836              <p>
837                <a class="link" href="reference/basic_socket_iostream/time_point.html" title="basic_socket_iostream::time_point"><code class="computeroutput">basic_socket_iostream::time_point</code></a>
838              </p>
839            </td>
840<td>
841              <p>
842                <a class="link" href="reference/basic_socket_iostream/time_type.html" title="basic_socket_iostream::time_type"><code class="computeroutput">basic_socket_iostream::time_type</code></a>
843              </p>
844            </td>
845<td>
846            </td>
847</tr>
848<tr>
849<td>
850              <p>
851                <a class="link" href="reference/basic_socket_iostream/expiry.html" title="basic_socket_iostream::expiry"><code class="computeroutput">basic_socket_iostream::expiry</code></a>
852              </p>
853            </td>
854<td>
855              <p>
856                <a class="link" href="reference/basic_socket_iostream/expires_at.html" title="basic_socket_iostream::expires_at"><code class="computeroutput">basic_socket_iostream::expires_at</code></a>
857                and <a class="link" href="reference/basic_socket_iostream/expires_from_now.html" title="basic_socket_iostream::expires_from_now"><code class="computeroutput">basic_socket_iostream::expires_from_now</code></a>
858                getters
859              </p>
860            </td>
861<td>
862            </td>
863</tr>
864<tr>
865<td>
866              <p>
867                <a class="link" href="reference/basic_socket_iostream/expires_after.html" title="basic_socket_iostream::expires_after"><code class="computeroutput">basic_socket_iostream::expires_after</code></a>
868              </p>
869            </td>
870<td>
871              <p>
872                <a class="link" href="reference/basic_socket_iostream/expires_from_now.html" title="basic_socket_iostream::expires_from_now"><code class="computeroutput">basic_socket_iostream::expires_from_now</code></a>
873                setter
874              </p>
875            </td>
876<td>
877            </td>
878</tr>
879<tr>
880<td>
881              <p>
882                <a class="link" href="reference/basic_waitable_timer/cancel.html" title="basic_waitable_timer::cancel"><code class="computeroutput">basic_waitable_timer::cancel</code></a>
883              </p>
884            </td>
885<td>
886              <p>
887                <a class="link" href="reference/basic_waitable_timer/cancel.html" title="basic_waitable_timer::cancel"><code class="computeroutput">basic_waitable_timer::cancel</code></a>
888                overload that takes <code class="computeroutput">error_code&amp;</code>
889              </p>
890            </td>
891<td>
892              <p>
893                The <code class="computeroutput">error_code</code> overload is not required.
894              </p>
895            </td>
896</tr>
897<tr>
898<td>
899              <p>
900                <a class="link" href="reference/basic_waitable_timer/cancel_one.html" title="basic_waitable_timer::cancel_one"><code class="computeroutput">basic_waitable_timer::cancel_one</code></a>
901              </p>
902            </td>
903<td>
904              <p>
905                <a class="link" href="reference/basic_waitable_timer/cancel_one.html" title="basic_waitable_timer::cancel_one"><code class="computeroutput">basic_waitable_timer::cancel_one</code></a>
906                overload that takes <code class="computeroutput">error_code&amp;</code>
907              </p>
908            </td>
909<td>
910              <p>
911                The <code class="computeroutput">error_code</code> overload is not required.
912              </p>
913            </td>
914</tr>
915<tr>
916<td>
917              <p>
918                <a class="link" href="reference/basic_waitable_timer/expires_at.html" title="basic_waitable_timer::expires_at"><code class="computeroutput">basic_waitable_timer::expires_at</code></a>
919                setter
920              </p>
921            </td>
922<td>
923              <p>
924                <a class="link" href="reference/basic_waitable_timer/expires_at.html" title="basic_waitable_timer::expires_at"><code class="computeroutput">basic_waitable_timer::expires_at</code></a>
925                setter that takes <code class="computeroutput">error_code&amp;</code>
926              </p>
927            </td>
928<td>
929              <p>
930                The <code class="computeroutput">error_code</code> overload is not required.
931              </p>
932            </td>
933</tr>
934<tr>
935<td>
936              <p>
937                <a class="link" href="reference/basic_waitable_timer/expiry.html" title="basic_waitable_timer::expiry"><code class="computeroutput">basic_waitable_timer::expiry</code></a>
938              </p>
939            </td>
940<td>
941              <p>
942                <a class="link" href="reference/basic_waitable_timer/expires_at.html" title="basic_waitable_timer::expires_at"><code class="computeroutput">basic_waitable_timer::expires_at</code></a>
943                and <a class="link" href="reference/basic_waitable_timer/expires_from_now.html" title="basic_waitable_timer::expires_from_now"><code class="computeroutput">basic_waitable_timer::expires_from_now</code></a>
944                getters
945              </p>
946            </td>
947<td>
948            </td>
949</tr>
950<tr>
951<td>
952              <p>
953                <a class="link" href="reference/basic_waitable_timer/expires_after.html" title="basic_waitable_timer::expires_after"><code class="computeroutput">basic_waitable_timer::expires_after</code></a>
954              </p>
955            </td>
956<td>
957              <p>
958                <a class="link" href="reference/basic_waitable_timer/expires_from_now.html" title="basic_waitable_timer::expires_from_now"><code class="computeroutput">basic_waitable_timer::expires_from_now</code></a>
959                setter
960              </p>
961            </td>
962<td>
963            </td>
964</tr>
965<tr>
966<td>
967              <p>
968                <a class="link" href="reference/ip__address/make_address.html" title="ip::address::make_address"><code class="computeroutput">ip::make_address</code></a>
969              </p>
970            </td>
971<td>
972              <p>
973                <a class="link" href="reference/ip__address/from_string.html" title="ip::address::from_string"><code class="computeroutput">ip::address::from_string</code></a>
974              </p>
975            </td>
976<td>
977            </td>
978</tr>
979<tr>
980<td>
981              <p>
982                <a class="link" href="reference/ip__address_v4/make_address_v4.html" title="ip::address_v4::make_address_v4"><code class="computeroutput">ip::make_address_v4</code></a>
983              </p>
984            </td>
985<td>
986              <p>
987                <a class="link" href="reference/ip__address_v4/from_string.html" title="ip::address_v4::from_string"><code class="computeroutput">ip::address_v4::from_string</code></a>
988                and <a class="link" href="reference/ip__address_v6/to_v4.html" title="ip::address_v6::to_v4"><code class="computeroutput">ip::address_v6::to_v4</code></a>
989              </p>
990            </td>
991<td>
992            </td>
993</tr>
994<tr>
995<td>
996              <p>
997                <a class="link" href="reference/ip__address_v6/make_address_v6.html" title="ip::address_v6::make_address_v6"><code class="computeroutput">ip::make_address_v6</code></a>
998              </p>
999            </td>
1000<td>
1001              <p>
1002                <a class="link" href="reference/ip__address_v6/from_string.html" title="ip::address_v6::from_string"><code class="computeroutput">ip::address_v6::from_string</code></a>
1003                and <a class="link" href="reference/ip__address_v6/v4_mapped.html" title="ip::address_v6::v4_mapped"><code class="computeroutput">ip::address_v6::v4_mapped</code></a>
1004              </p>
1005            </td>
1006<td>
1007            </td>
1008</tr>
1009<tr>
1010<td>
1011              <p>
1012                <a class="link" href="reference/ip__address/to_string.html" title="ip::address::to_string"><code class="computeroutput">ip::address::to_string</code></a>
1013              </p>
1014            </td>
1015<td>
1016              <p>
1017                <a class="link" href="reference/ip__address/to_string.html" title="ip::address::to_string"><code class="computeroutput">ip::address::to_string</code></a>
1018                that takes <code class="computeroutput">error_code&amp;</code>
1019              </p>
1020            </td>
1021<td>
1022              <p>
1023                The <code class="computeroutput">error_code</code> overload is not required.
1024              </p>
1025            </td>
1026</tr>
1027<tr>
1028<td>
1029              <p>
1030                <a class="link" href="reference/ip__address_v4/to_string.html" title="ip::address_v4::to_string"><code class="computeroutput">ip::address_v4::to_string</code></a>
1031              </p>
1032            </td>
1033<td>
1034              <p>
1035                <a class="link" href="reference/ip__address_v4/to_string.html" title="ip::address_v4::to_string"><code class="computeroutput">ip::address_v4::to_string</code></a>
1036                that takes <code class="computeroutput">error_code&amp;</code>
1037              </p>
1038            </td>
1039<td>
1040              <p>
1041                The <code class="computeroutput">error_code</code> overload is not required.
1042              </p>
1043            </td>
1044</tr>
1045<tr>
1046<td>
1047              <p>
1048                <a class="link" href="reference/ip__address_v6/to_string.html" title="ip::address_v6::to_string"><code class="computeroutput">ip::address_v6::to_string</code></a>
1049              </p>
1050            </td>
1051<td>
1052              <p>
1053                <a class="link" href="reference/ip__address_v6/to_string.html" title="ip::address_v6::to_string"><code class="computeroutput">ip::address_v6::to_string</code></a>
1054                that takes <code class="computeroutput">error_code&amp;</code>
1055              </p>
1056            </td>
1057<td>
1058              <p>
1059                The <code class="computeroutput">error_code</code> overload is not required.
1060              </p>
1061            </td>
1062</tr>
1063<tr>
1064<td>
1065              <p>
1066                No replacement
1067              </p>
1068            </td>
1069<td>
1070              <p>
1071                <a class="link" href="reference/ip__address_v6/is_v4_compatible.html" title="ip::address_v6::is_v4_compatible"><code class="computeroutput">ip::address_v6::is_v4_compatible</code></a>
1072                and <a class="link" href="reference/ip__address_v6/v4_compatible.html" title="ip::address_v6::v4_compatible"><code class="computeroutput">ip::address_v6::v4_compatible</code></a>
1073              </p>
1074            </td>
1075<td>
1076            </td>
1077</tr>
1078<tr>
1079<td>
1080              <p>
1081                <a class="link" href="reference/ip__network_v4.html" title="ip::network_v4"><code class="computeroutput">ip::network_v4</code></a>
1082              </p>
1083            </td>
1084<td>
1085              <p>
1086                <a class="link" href="reference/ip__address_v4/broadcast.html" title="ip::address_v4::broadcast"><code class="computeroutput">ip::address_v4::broadcast</code></a>,
1087                <a class="link" href="reference/ip__address_v4/is_class_a.html" title="ip::address_v4::is_class_a"><code class="computeroutput">ip::address_v4::is_class_a</code></a>,
1088                <a class="link" href="reference/ip__address_v4/is_class_b.html" title="ip::address_v4::is_class_b"><code class="computeroutput">ip::address_v4::is_class_b</code></a>,
1089                <a class="link" href="reference/ip__address_v4/is_class_c.html" title="ip::address_v4::is_class_c"><code class="computeroutput">ip::address_v4::is_class_c</code></a>,
1090                and <a class="link" href="reference/ip__address_v4/netmask.html" title="ip::address_v4::netmask"><code class="computeroutput">ip::address_v4::netmask</code></a>
1091              </p>
1092            </td>
1093<td>
1094              <p>
1095                The <code class="computeroutput">network_v4</code> class adds the ability to manipulate
1096                IPv4 network addresses using CIDR notation.
1097              </p>
1098            </td>
1099</tr>
1100<tr>
1101<td>
1102              <p>
1103                <a class="link" href="reference/ip__network_v6.html" title="ip::network_v6"><code class="computeroutput">ip::network_v6</code></a>
1104              </p>
1105            </td>
1106<td>
1107            </td>
1108<td>
1109              <p>
1110                The <code class="computeroutput">network_v6</code> class adds the ability to manipulate
1111                IPv6 network addresses using CIDR notation.
1112              </p>
1113            </td>
1114</tr>
1115<tr>
1116<td>
1117              <p>
1118                <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">ip::address_v4_iterator</code></a>
1119                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">ip::address_v4_range</code></a>
1120              </p>
1121            </td>
1122<td>
1123            </td>
1124<td>
1125              <p>
1126                The <code class="computeroutput">ip::address_v4_iterator</code> and <code class="computeroutput">address_v4_range</code>
1127                classes add the ability to iterate over all, or a subset of, IPv4
1128                addresses.
1129              </p>
1130            </td>
1131</tr>
1132<tr>
1133<td>
1134              <p>
1135                <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">ip::address_v6_iterator</code></a>
1136                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">ip::address_v6_range</code></a>
1137              </p>
1138            </td>
1139<td>
1140            </td>
1141<td>
1142              <p>
1143                The <code class="computeroutput">ip::address_v6_iterator</code> and <code class="computeroutput">address_v6_range</code>
1144                classes add the ability to iterate over all, or a subset of, IPv6
1145                addresses.
1146              </p>
1147            </td>
1148</tr>
1149<tr>
1150<td>
1151              <p>
1152                <a class="link" href="reference/ip__basic_resolver/results_type.html" title="ip::basic_resolver::results_type"><code class="computeroutput">ip::basic_resolver::results_type</code></a>
1153              </p>
1154            </td>
1155<td>
1156              <p>
1157                <a class="link" href="reference/ip__basic_resolver/iterator.html" title="ip::basic_resolver::iterator"><code class="computeroutput">ip::basic_resolver::iterator</code></a>
1158              </p>
1159            </td>
1160<td>
1161              <p>
1162                Resolvers now produce ranges rather than single iterators.
1163              </p>
1164            </td>
1165</tr>
1166<tr>
1167<td>
1168              <p>
1169                <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput">ip::basic_resolver::resolve</code></a>
1170                overloads taking hostname and service as arguments
1171              </p>
1172            </td>
1173<td>
1174              <p>
1175                <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput">ip::basic_resolver::resolve</code></a>
1176                overloads taking a <a class="link" href="reference/ip__basic_resolver/query.html" title="ip::basic_resolver::query"><code class="computeroutput">ip::basic_resolver::query</code></a>
1177              </p>
1178            </td>
1179<td>
1180            </td>
1181</tr>
1182<tr>
1183<td>
1184              <p>
1185                <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput">ip::basic_resolver::resolve</code></a>
1186                returns a range
1187              </p>
1188            </td>
1189<td>
1190              <p>
1191                <a class="link" href="reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve"><code class="computeroutput">ip::basic_resolver::resolve</code></a>
1192                returns a single iterator
1193              </p>
1194            </td>
1195<td>
1196            </td>
1197</tr>
1198<tr>
1199<td>
1200              <p>
1201                <a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput">ip::basic_resolver::async_resolve</code></a>
1202                overloads taking hostname and service as arguments
1203              </p>
1204            </td>
1205<td>
1206              <p>
1207                <a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput">ip::basic_resolver::async_resolve</code></a>
1208                overloads taking a <a class="link" href="reference/ip__basic_resolver/query.html" title="ip::basic_resolver::query"><code class="computeroutput">ip::basic_resolver::query</code></a>
1209              </p>
1210            </td>
1211<td>
1212            </td>
1213</tr>
1214<tr>
1215<td>
1216              <p>
1217                <a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput">ip::basic_resolver::async_resolve</code></a>
1218                calls the handler with a range
1219              </p>
1220            </td>
1221<td>
1222              <p>
1223                <a class="link" href="reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve"><code class="computeroutput">ip::basic_resolver::async_resolve</code></a>
1224                calls the handler with a single iterator
1225              </p>
1226            </td>
1227<td>
1228            </td>
1229</tr>
1230</tbody>
1231</table></div>
1232</div>
1233<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
1234<td align="left"></td>
1235<td align="right"><div class="copyright-footer">Copyright © 2003-2020 Christopher M.
1236      Kohlhoff<p>
1237        Distributed under the Boost Software License, Version 1.0. (See accompanying
1238        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>)
1239      </p>
1240</div></td>
1241</tr></table>
1242<hr>
1243<div class="spirit-nav">
1244<a accesskey="p" href="reference/is_error_code_enum_lt__boost__asio__ssl__error__stream_errors__gt_/value.html"><img src="../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../boost_asio.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="std_executors.html"><img src="../../../doc/src/images/next.png" alt="Next"></a>
1245</div>
1246</body>
1247</html>
1248