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< boost::asio::ssl::error::stream_errors >::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 <buffer></code> 58 </p> 59 </td> 60<td> 61 <p> 62 <code class="computeroutput">#include <boost/asio/ts/buffer.hpp></code> 63 </p> 64 </td> 65</tr> 66<tr> 67<td> 68 <p> 69 <code class="computeroutput">#include <executor></code> 70 </p> 71 </td> 72<td> 73 <p> 74 <code class="computeroutput">#include <boost/asio/ts/executor.hpp></code> 75 </p> 76 </td> 77</tr> 78<tr> 79<td> 80 <p> 81 <code class="computeroutput">#include <internet></code> 82 </p> 83 </td> 84<td> 85 <p> 86 <code class="computeroutput">#include <boost/asio/ts/internet.hpp></code> 87 </p> 88 </td> 89</tr> 90<tr> 91<td> 92 <p> 93 <code class="computeroutput">#include <io_context></code> 94 </p> 95 </td> 96<td> 97 <p> 98 <code class="computeroutput">#include <boost/asio/ts/io_context.hpp></code> 99 </p> 100 </td> 101</tr> 102<tr> 103<td> 104 <p> 105 <code class="computeroutput">#include <net></code> 106 </p> 107 </td> 108<td> 109 <p> 110 <code class="computeroutput">#include <boost/asio/ts/net.hpp></code> 111 </p> 112 </td> 113</tr> 114<tr> 115<td> 116 <p> 117 <code class="computeroutput">#include <netfwd></code> 118 </p> 119 </td> 120<td> 121 <p> 122 <code class="computeroutput">#include <boost/asio/ts/netfwd.hpp></code> 123 </p> 124 </td> 125</tr> 126<tr> 127<td> 128 <p> 129 <code class="computeroutput">#include <socket></code> 130 </p> 131 </td> 132<td> 133 <p> 134 <code class="computeroutput">#include <boost/asio/ts/socket.hpp></code> 135 </p> 136 </td> 137</tr> 138<tr> 139<td> 140 <p> 141 <code class="computeroutput">#include <timer></code> 142 </p> 143 </td> 144<td> 145 <p> 146 <code class="computeroutput">#include <boost/asio/ts/timer.hpp></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&</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&</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&</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&</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&</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&</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&</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&</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&</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&</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< address_v4 >"><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< address_v4 >"><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< address_v6 >"><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< address_v6 >"><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