Imported Upstream version 1.72.0
[platform/upstream/boost.git] / doc / html / boost_asio / overview / networking / bsd_sockets.html
1 <html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
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 &#169; 2003-2019 Christopher M. Kohlhoff<p>
542         Distributed under the Boost Software License, Version 1.0. (See accompanying
543         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>)
544       </p>
545 </div></td>
546 </tr></table>
547 <hr>
548 <div class="spirit-nav">
549 <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>
550 </div>
551 </body>
552 </html>