1<html> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4<title>The BSD Socket API and Boost.Asio</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="../networking.html" title="Networking"> 9<link rel="prev" href="iostreams.html" title="Socket Iostreams"> 10<link rel="next" href="../timers.html" title="Timers"> 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="iostreams.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../networking.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="../timers.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> 24</div> 25<div class="section"> 26<div class="titlepage"><div><div><h4 class="title"> 27<a name="boost_asio.overview.networking.bsd_sockets"></a><a class="link" href="bsd_sockets.html" title="The BSD Socket API and Boost.Asio">The BSD 28 Socket API and Boost.Asio</a> 29</h4></div></div></div> 30<p> 31 The Boost.Asio library includes a low-level socket interface based on the 32 BSD socket API, which is widely implemented and supported by extensive 33 literature. It is also used as the basis for networking APIs in other languages, 34 like Java. This low-level interface is designed to support the development 35 of efficient and scalable applications. For example, it permits programmers 36 to exert finer control over the number of system calls, avoid redundant 37 data copying, minimise the use of resources like threads, and so on. 38 </p> 39<p> 40 Unsafe and error prone aspects of the BSD socket API are not included. 41 For example, the use of <code class="computeroutput">int</code> to represent all sockets lacks 42 type safety. The socket representation in Boost.Asio uses a distinct type 43 for each protocol, e.g. for TCP one would use <code class="computeroutput">ip::tcp::socket</code>, 44 and for UDP one uses <code class="computeroutput">ip::udp::socket</code>. 45 </p> 46<p> 47 The following table shows the mapping between the BSD socket API and Boost.Asio: 48 </p> 49<div class="informaltable"><table class="table"> 50<colgroup> 51<col> 52<col> 53</colgroup> 54<thead><tr> 55<th> 56 <p> 57 BSD Socket API Elements 58 </p> 59 </th> 60<th> 61 <p> 62 Equivalents in Boost.Asio 63 </p> 64 </th> 65</tr></thead> 66<tbody> 67<tr> 68<td> 69 <p> 70 socket descriptor - <code class="computeroutput">int</code> (POSIX) or <code class="computeroutput">SOCKET</code> 71 (Windows) 72 </p> 73 </td> 74<td> 75 <p> 76 For TCP: <a class="link" href="../../reference/ip__tcp/socket.html" title="ip::tcp::socket">ip::tcp::socket</a>, 77 <a class="link" href="../../reference/ip__tcp/acceptor.html" title="ip::tcp::acceptor">ip::tcp::acceptor</a> 78 </p> 79 <p> 80 For UDP: <a class="link" href="../../reference/ip__udp/socket.html" title="ip::udp::socket">ip::udp::socket</a> 81 </p> 82 <p> 83 <a class="link" href="../../reference/basic_socket.html" title="basic_socket">basic_socket</a>, 84 <a class="link" href="../../reference/basic_stream_socket.html" title="basic_stream_socket">basic_stream_socket</a>, 85 <a class="link" href="../../reference/basic_datagram_socket.html" title="basic_datagram_socket">basic_datagram_socket</a>, 86 <a class="link" href="../../reference/basic_raw_socket.html" title="basic_raw_socket">basic_raw_socket</a> 87 </p> 88 </td> 89</tr> 90<tr> 91<td> 92 <p> 93 <code class="computeroutput">in_addr</code>, <code class="computeroutput">in6_addr</code> 94 </p> 95 </td> 96<td> 97 <p> 98 <a class="link" href="../../reference/ip__address.html" title="ip::address">ip::address</a>, 99 <a class="link" href="../../reference/ip__address.html" title="ip::address">ip::address_v4</a>, 100 <a class="link" href="../../reference/ip__address.html" title="ip::address">ip::address_v6</a> 101 </p> 102 </td> 103</tr> 104<tr> 105<td> 106 <p> 107 <code class="computeroutput">sockaddr_in</code>, <code class="computeroutput">sockaddr_in6</code> 108 </p> 109 </td> 110<td> 111 <p> 112 For TCP: <a class="link" href="../../reference/ip__tcp/endpoint.html" title="ip::tcp::endpoint">ip::tcp::endpoint</a> 113 </p> 114 <p> 115 For UDP: <a class="link" href="../../reference/ip__udp/endpoint.html" title="ip::udp::endpoint">ip::udp::endpoint</a> 116 </p> 117 <p> 118 <a class="link" href="../../reference/ip__basic_endpoint.html" title="ip::basic_endpoint">ip::basic_endpoint</a> 119 </p> 120 </td> 121</tr> 122<tr> 123<td> 124 <p> 125 <code class="computeroutput">accept()</code> 126 </p> 127 </td> 128<td> 129 <p> 130 For TCP: <a class="link" href="../../reference/basic_socket_acceptor/accept.html" title="basic_socket_acceptor::accept">ip::tcp::acceptor::accept()</a> 131 </p> 132 <p> 133 <a class="link" href="../../reference/basic_socket_acceptor/accept.html" title="basic_socket_acceptor::accept">basic_socket_acceptor::accept()</a> 134 </p> 135 </td> 136</tr> 137<tr> 138<td> 139 <p> 140 <code class="computeroutput">bind()</code> 141 </p> 142 </td> 143<td> 144 <p> 145 For TCP: <a class="link" href="../../reference/basic_socket/bind.html" title="basic_socket::bind">ip::tcp::acceptor::bind()</a>, 146 <a class="link" href="../../reference/basic_socket/bind.html" title="basic_socket::bind">ip::tcp::socket::bind()</a> 147 </p> 148 <p> 149 For UDP: <a class="link" href="../../reference/basic_socket/bind.html" title="basic_socket::bind">ip::udp::socket::bind()</a> 150 </p> 151 <p> 152 <a class="link" href="../../reference/basic_socket/bind.html" title="basic_socket::bind">basic_socket::bind()</a> 153 </p> 154 </td> 155</tr> 156<tr> 157<td> 158 <p> 159 <code class="computeroutput">close()</code> 160 </p> 161 </td> 162<td> 163 <p> 164 For TCP: <a class="link" href="../../reference/basic_socket/close.html" title="basic_socket::close">ip::tcp::acceptor::close()</a>, 165 <a class="link" href="../../reference/basic_socket/close.html" title="basic_socket::close">ip::tcp::socket::close()</a> 166 </p> 167 <p> 168 For UDP: <a class="link" href="../../reference/basic_socket/close.html" title="basic_socket::close">ip::udp::socket::close()</a> 169 </p> 170 <p> 171 <a class="link" href="../../reference/basic_socket/close.html" title="basic_socket::close">basic_socket::close()</a> 172 </p> 173 </td> 174</tr> 175<tr> 176<td> 177 <p> 178 <code class="computeroutput">connect()</code> 179 </p> 180 </td> 181<td> 182 <p> 183 For TCP: <a class="link" href="../../reference/basic_socket/connect.html" title="basic_socket::connect">ip::tcp::socket::connect()</a> 184 </p> 185 <p> 186 For UDP: <a class="link" href="../../reference/basic_socket/connect.html" title="basic_socket::connect">ip::udp::socket::connect()</a> 187 </p> 188 <p> 189 <a class="link" href="../../reference/basic_socket/connect.html" title="basic_socket::connect">basic_socket::connect()</a> 190 </p> 191 </td> 192</tr> 193<tr> 194<td> 195 <p> 196 <code class="computeroutput">getaddrinfo()</code>, <code class="computeroutput">gethostbyaddr()</code>, <code class="computeroutput">gethostbyname()</code>, 197 <code class="computeroutput">getnameinfo()</code>, <code class="computeroutput">getservbyname()</code>, <code class="computeroutput">getservbyport()</code> 198 </p> 199 </td> 200<td> 201 <p> 202 For TCP: <a class="link" href="../../reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve">ip::tcp::resolver::resolve()</a>, 203 <a class="link" href="../../reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve">ip::tcp::resolver::async_resolve()</a> 204 </p> 205 <p> 206 For UDP: <a class="link" href="../../reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve">ip::udp::resolver::resolve()</a>, 207 <a class="link" href="../../reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve">ip::udp::resolver::async_resolve()</a> 208 </p> 209 <p> 210 <a class="link" href="../../reference/ip__basic_resolver/resolve.html" title="ip::basic_resolver::resolve">ip::basic_resolver::resolve()</a>, 211 <a class="link" href="../../reference/ip__basic_resolver/async_resolve.html" title="ip::basic_resolver::async_resolve">ip::basic_resolver::async_resolve()</a> 212 </p> 213 </td> 214</tr> 215<tr> 216<td> 217 <p> 218 <code class="computeroutput">gethostname()</code> 219 </p> 220 </td> 221<td> 222 <p> 223 <a class="link" href="../../reference/ip__host_name.html" title="ip::host_name">ip::host_name()</a> 224 </p> 225 </td> 226</tr> 227<tr> 228<td> 229 <p> 230 <code class="computeroutput">getpeername()</code> 231 </p> 232 </td> 233<td> 234 <p> 235 For TCP: <a class="link" href="../../reference/basic_socket/remote_endpoint.html" title="basic_socket::remote_endpoint">ip::tcp::socket::remote_endpoint()</a> 236 </p> 237 <p> 238 For UDP: <a class="link" href="../../reference/basic_socket/remote_endpoint.html" title="basic_socket::remote_endpoint">ip::udp::socket::remote_endpoint()</a> 239 </p> 240 <p> 241 <a class="link" href="../../reference/basic_socket/remote_endpoint.html" title="basic_socket::remote_endpoint">basic_socket::remote_endpoint()</a> 242 </p> 243 </td> 244</tr> 245<tr> 246<td> 247 <p> 248 <code class="computeroutput">getsockname()</code> 249 </p> 250 </td> 251<td> 252 <p> 253 For TCP: <a class="link" href="../../reference/basic_socket/local_endpoint.html" title="basic_socket::local_endpoint">ip::tcp::acceptor::local_endpoint()</a>, 254 <a class="link" href="../../reference/basic_socket/local_endpoint.html" title="basic_socket::local_endpoint">ip::tcp::socket::local_endpoint()</a> 255 </p> 256 <p> 257 For UDP: <a class="link" href="../../reference/basic_socket/local_endpoint.html" title="basic_socket::local_endpoint">ip::udp::socket::local_endpoint()</a> 258 </p> 259 <p> 260 <a class="link" href="../../reference/basic_socket/local_endpoint.html" title="basic_socket::local_endpoint">basic_socket::local_endpoint()</a> 261 </p> 262 </td> 263</tr> 264<tr> 265<td> 266 <p> 267 <code class="computeroutput">getsockopt()</code> 268 </p> 269 </td> 270<td> 271 <p> 272 For TCP: <a class="link" href="../../reference/basic_socket/get_option.html" title="basic_socket::get_option">ip::tcp::acceptor::get_option()</a>, 273 <a class="link" href="../../reference/basic_socket/get_option.html" title="basic_socket::get_option">ip::tcp::socket::get_option()</a> 274 </p> 275 <p> 276 For UDP: <a class="link" href="../../reference/basic_socket/get_option.html" title="basic_socket::get_option">ip::udp::socket::get_option()</a> 277 </p> 278 <p> 279 <a class="link" href="../../reference/basic_socket/get_option.html" title="basic_socket::get_option">basic_socket::get_option()</a> 280 </p> 281 </td> 282</tr> 283<tr> 284<td> 285 <p> 286 <code class="computeroutput">inet_addr()</code>, <code class="computeroutput">inet_aton()</code>, <code class="computeroutput">inet_pton()</code> 287 </p> 288 </td> 289<td> 290 <p> 291 <a class="link" href="../../reference/ip__address/from_string.html" title="ip::address::from_string">ip::address::from_string()</a>, 292 <a class="link" href="../../reference/ip__address/from_string.html" title="ip::address::from_string">ip::address_v4::from_string()</a>, 293 <a class="link" href="../../reference/ip__address/from_string.html" title="ip::address::from_string">ip_address_v6::from_string()</a> 294 </p> 295 </td> 296</tr> 297<tr> 298<td> 299 <p> 300 <code class="computeroutput">inet_ntoa()</code>, <code class="computeroutput">inet_ntop()</code> 301 </p> 302 </td> 303<td> 304 <p> 305 <a class="link" href="../../reference/ip__address/to_string.html" title="ip::address::to_string">ip::address::to_string()</a>, 306 <a class="link" href="../../reference/ip__address/to_string.html" title="ip::address::to_string">ip::address_v4::to_string()</a>, 307 <a class="link" href="../../reference/ip__address/to_string.html" title="ip::address::to_string">ip_address_v6::to_string()</a> 308 </p> 309 </td> 310</tr> 311<tr> 312<td> 313 <p> 314 <code class="computeroutput">ioctl()</code> 315 </p> 316 </td> 317<td> 318 <p> 319 For TCP: <a class="link" href="../../reference/basic_socket/io_control.html" title="basic_socket::io_control">ip::tcp::socket::io_control()</a> 320 </p> 321 <p> 322 For UDP: <a class="link" href="../../reference/basic_socket/io_control.html" title="basic_socket::io_control">ip::udp::socket::io_control()</a> 323 </p> 324 <p> 325 <a class="link" href="../../reference/basic_socket/io_control.html" title="basic_socket::io_control">basic_socket::io_control()</a> 326 </p> 327 </td> 328</tr> 329<tr> 330<td> 331 <p> 332 <code class="computeroutput">listen()</code> 333 </p> 334 </td> 335<td> 336 <p> 337 For TCP: <a class="link" href="../../reference/basic_socket_acceptor/listen.html" title="basic_socket_acceptor::listen">ip::tcp::acceptor::listen()</a> 338 </p> 339 <p> 340 <a class="link" href="../../reference/basic_socket_acceptor/listen.html" title="basic_socket_acceptor::listen">basic_socket_acceptor::listen()</a> 341 </p> 342 </td> 343</tr> 344<tr> 345<td> 346 <p> 347 <code class="computeroutput">poll()</code>, <code class="computeroutput">select()</code>, <code class="computeroutput">pselect()</code> 348 </p> 349 </td> 350<td> 351 <p> 352 <a class="link" href="../../reference/io_context/run.html" title="io_context::run">io_context::run()</a>, 353 <a class="link" href="../../reference/io_context/run_one.html" title="io_context::run_one">io_context::run_one()</a>, 354 <a class="link" href="../../reference/io_context/poll.html" title="io_context::poll">io_context::poll()</a>, 355 <a class="link" href="../../reference/io_context/poll_one.html" title="io_context::poll_one">io_context::poll_one()</a> 356 </p> 357 <p> 358 Note: in conjunction with asynchronous operations. 359 </p> 360 </td> 361</tr> 362<tr> 363<td> 364 <p> 365 <code class="computeroutput">readv()</code>, <code class="computeroutput">recv()</code>, <code class="computeroutput">read()</code> 366 </p> 367 </td> 368<td> 369 <p> 370 For TCP: <a class="link" href="../../reference/basic_stream_socket/read_some.html" title="basic_stream_socket::read_some">ip::tcp::socket::read_some()</a>, 371 <a class="link" href="../../reference/basic_stream_socket/async_read_some.html" title="basic_stream_socket::async_read_some">ip::tcp::socket::async_read_some()</a>, 372 <a class="link" href="../../reference/basic_stream_socket/receive.html" title="basic_stream_socket::receive">ip::tcp::socket::receive()</a>, 373 <a class="link" href="../../reference/basic_stream_socket/async_receive.html" title="basic_stream_socket::async_receive">ip::tcp::socket::async_receive()</a> 374 </p> 375 <p> 376 For UDP: <a class="link" href="../../reference/basic_datagram_socket/receive.html" title="basic_datagram_socket::receive">ip::udp::socket::receive()</a>, 377 <a class="link" href="../../reference/basic_datagram_socket/async_receive.html" title="basic_datagram_socket::async_receive">ip::udp::socket::async_receive()</a> 378 </p> 379 <p> 380 <a class="link" href="../../reference/basic_stream_socket/read_some.html" title="basic_stream_socket::read_some">basic_stream_socket::read_some()</a>, 381 <a class="link" href="../../reference/basic_stream_socket/async_read_some.html" title="basic_stream_socket::async_read_some">basic_stream_socket::async_read_some()</a>, 382 <a class="link" href="../../reference/basic_stream_socket/receive.html" title="basic_stream_socket::receive">basic_stream_socket::receive()</a>, 383 <a class="link" href="../../reference/basic_stream_socket/async_receive.html" title="basic_stream_socket::async_receive">basic_stream_socket::async_receive()</a>, 384 <a class="link" href="../../reference/basic_datagram_socket/receive.html" title="basic_datagram_socket::receive">basic_datagram_socket::receive()</a>, 385 <a class="link" href="../../reference/basic_datagram_socket/async_receive.html" title="basic_datagram_socket::async_receive">basic_datagram_socket::async_receive()</a> 386 </p> 387 </td> 388</tr> 389<tr> 390<td> 391 <p> 392 <code class="computeroutput">recvfrom()</code> 393 </p> 394 </td> 395<td> 396 <p> 397 For UDP: <a class="link" href="../../reference/basic_datagram_socket/receive_from.html" title="basic_datagram_socket::receive_from">ip::udp::socket::receive_from()</a>, 398 <a class="link" href="../../reference/basic_datagram_socket/async_receive_from.html" title="basic_datagram_socket::async_receive_from">ip::udp::socket::async_receive_from()</a> 399 </p> 400 <p> 401 <a class="link" href="../../reference/basic_datagram_socket/receive_from.html" title="basic_datagram_socket::receive_from">basic_datagram_socket::receive_from()</a>, 402 <a class="link" href="../../reference/basic_datagram_socket/async_receive_from.html" title="basic_datagram_socket::async_receive_from">basic_datagram_socket::async_receive_from()</a> 403 </p> 404 </td> 405</tr> 406<tr> 407<td> 408 <p> 409 <code class="computeroutput">send()</code>, <code class="computeroutput">write()</code>, <code class="computeroutput">writev()</code> 410 </p> 411 </td> 412<td> 413 <p> 414 For TCP: <a class="link" href="../../reference/basic_stream_socket/write_some.html" title="basic_stream_socket::write_some">ip::tcp::socket::write_some()</a>, 415 <a class="link" href="../../reference/basic_stream_socket/async_write_some.html" title="basic_stream_socket::async_write_some">ip::tcp::socket::async_write_some()</a>, 416 <a class="link" href="../../reference/basic_stream_socket/send.html" title="basic_stream_socket::send">ip::tcp::socket::send()</a>, 417 <a class="link" href="../../reference/basic_stream_socket/async_send.html" title="basic_stream_socket::async_send">ip::tcp::socket::async_send()</a> 418 </p> 419 <p> 420 For UDP: <a class="link" href="../../reference/basic_datagram_socket/send.html" title="basic_datagram_socket::send">ip::udp::socket::send()</a>, 421 <a class="link" href="../../reference/basic_datagram_socket/async_send.html" title="basic_datagram_socket::async_send">ip::udp::socket::async_send()</a> 422 </p> 423 <p> 424 <a class="link" href="../../reference/basic_stream_socket/write_some.html" title="basic_stream_socket::write_some">basic_stream_socket::write_some()</a>, 425 <a class="link" href="../../reference/basic_stream_socket/async_write_some.html" title="basic_stream_socket::async_write_some">basic_stream_socket::async_write_some()</a>, 426 <a class="link" href="../../reference/basic_stream_socket/send.html" title="basic_stream_socket::send">basic_stream_socket::send()</a>, 427 <a class="link" href="../../reference/basic_stream_socket/async_send.html" title="basic_stream_socket::async_send">basic_stream_socket::async_send()</a>, 428 <a class="link" href="../../reference/basic_datagram_socket/send.html" title="basic_datagram_socket::send">basic_datagram_socket::send()</a>, 429 <a class="link" href="../../reference/basic_datagram_socket/async_send.html" title="basic_datagram_socket::async_send">basic_datagram_socket::async_send()</a> 430 </p> 431 </td> 432</tr> 433<tr> 434<td> 435 <p> 436 <code class="computeroutput">sendto()</code> 437 </p> 438 </td> 439<td> 440 <p> 441 For UDP: <a class="link" href="../../reference/basic_datagram_socket/send_to.html" title="basic_datagram_socket::send_to">ip::udp::socket::send_to()</a>, 442 <a class="link" href="../../reference/basic_datagram_socket/async_send_to.html" title="basic_datagram_socket::async_send_to">ip::udp::socket::async_send_to()</a> 443 </p> 444 <p> 445 <a class="link" href="../../reference/basic_datagram_socket/send_to.html" title="basic_datagram_socket::send_to">basic_datagram_socket::send_to()</a>, 446 <a class="link" href="../../reference/basic_datagram_socket/async_send_to.html" title="basic_datagram_socket::async_send_to">basic_datagram_socket::async_send_to()</a> 447 </p> 448 </td> 449</tr> 450<tr> 451<td> 452 <p> 453 <code class="computeroutput">setsockopt()</code> 454 </p> 455 </td> 456<td> 457 <p> 458 For TCP: <a class="link" href="../../reference/basic_socket/set_option.html" title="basic_socket::set_option">ip::tcp::acceptor::set_option()</a>, 459 <a class="link" href="../../reference/basic_socket/set_option.html" title="basic_socket::set_option">ip::tcp::socket::set_option()</a> 460 </p> 461 <p> 462 For UDP: <a class="link" href="../../reference/basic_socket/set_option.html" title="basic_socket::set_option">ip::udp::socket::set_option()</a> 463 </p> 464 <p> 465 <a class="link" href="../../reference/basic_socket/set_option.html" title="basic_socket::set_option">basic_socket::set_option()</a> 466 </p> 467 </td> 468</tr> 469<tr> 470<td> 471 <p> 472 <code class="computeroutput">shutdown()</code> 473 </p> 474 </td> 475<td> 476 <p> 477 For TCP: <a class="link" href="../../reference/basic_socket/shutdown.html" title="basic_socket::shutdown">ip::tcp::socket::shutdown()</a> 478 </p> 479 <p> 480 For UDP: <a class="link" href="../../reference/basic_socket/shutdown.html" title="basic_socket::shutdown">ip::udp::socket::shutdown()</a> 481 </p> 482 <p> 483 <a class="link" href="../../reference/basic_socket/shutdown.html" title="basic_socket::shutdown">basic_socket::shutdown()</a> 484 </p> 485 </td> 486</tr> 487<tr> 488<td> 489 <p> 490 <code class="computeroutput">sockatmark()</code> 491 </p> 492 </td> 493<td> 494 <p> 495 For TCP: <a class="link" href="../../reference/basic_socket/at_mark.html" title="basic_socket::at_mark">ip::tcp::socket::at_mark()</a> 496 </p> 497 <p> 498 <a class="link" href="../../reference/basic_socket/at_mark.html" title="basic_socket::at_mark">basic_socket::at_mark()</a> 499 </p> 500 </td> 501</tr> 502<tr> 503<td> 504 <p> 505 <code class="computeroutput">socket()</code> 506 </p> 507 </td> 508<td> 509 <p> 510 For TCP: <a class="link" href="../../reference/basic_socket/open.html" title="basic_socket::open">ip::tcp::acceptor::open()</a>, 511 <a class="link" href="../../reference/basic_socket/open.html" title="basic_socket::open">ip::tcp::socket::open()</a> 512 </p> 513 <p> 514 For UDP: <a class="link" href="../../reference/basic_socket/open.html" title="basic_socket::open">ip::udp::socket::open()</a> 515 </p> 516 <p> 517 <a class="link" href="../../reference/basic_socket/open.html" title="basic_socket::open">basic_socket::open()</a> 518 </p> 519 </td> 520</tr> 521<tr> 522<td> 523 <p> 524 <code class="computeroutput">socketpair()</code> 525 </p> 526 </td> 527<td> 528 <p> 529 <a class="link" href="../../reference/local__connect_pair.html" title="local::connect_pair">local::connect_pair()</a> 530 </p> 531 <p> 532 Note: POSIX operating systems only. 533 </p> 534 </td> 535</tr> 536</tbody> 537</table></div> 538</div> 539<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> 540<td align="left"></td> 541<td align="right"><div class="copyright-footer">Copyright © 2003-2020 Christopher M. 542 Kohlhoff<p> 543 Distributed under the Boost Software License, Version 1.0. (See accompanying 544 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>) 545 </p> 546</div></td> 547</tr></table> 548<hr> 549<div class="spirit-nav"> 550<a accesskey="p" href="iostreams.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../networking.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="../timers.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a> 551</div> 552</body> 553</html> 554