1:mod:`socket` --- Low-level networking interface
2================================================
3
4.. module:: socket
5   :synopsis: Low-level networking interface.
6
7**Source code:** :source:`Lib/socket.py`
8
9--------------
10
11This module provides access to the BSD *socket* interface. It is available on
12all modern Unix systems, Windows, MacOS, and probably additional platforms.
13
14.. note::
15
16   Some behavior may be platform dependent, since calls are made to the operating
17   system socket APIs.
18
19.. index:: object: socket
20
21The Python interface is a straightforward transliteration of the Unix system
22call and library interface for sockets to Python's object-oriented style: the
23:func:`.socket` function returns a :dfn:`socket object` whose methods implement
24the various socket system calls.  Parameter types are somewhat higher-level than
25in the C interface: as with :meth:`read` and :meth:`write` operations on Python
26files, buffer allocation on receive operations is automatic, and buffer length
27is implicit on send operations.
28
29
30.. seealso::
31
32   Module :mod:`socketserver`
33      Classes that simplify writing network servers.
34
35   Module :mod:`ssl`
36      A TLS/SSL wrapper for socket objects.
37
38
39Socket families
40---------------
41
42Depending on the system and the build options, various socket families
43are supported by this module.
44
45The address format required by a particular socket object is automatically
46selected based on the address family specified when the socket object was
47created.  Socket addresses are represented as follows:
48
49- The address of an :const:`AF_UNIX` socket bound to a file system node
50  is represented as a string, using the file system encoding and the
51  ``'surrogateescape'`` error handler (see :pep:`383`).  An address in
52  Linux's abstract namespace is returned as a :term:`bytes-like object` with
53  an initial null byte; note that sockets in this namespace can
54  communicate with normal file system sockets, so programs intended to
55  run on Linux may need to deal with both types of address.  A string or
56  bytes-like object can be used for either type of address when
57  passing it as an argument.
58
59   .. versionchanged:: 3.3
60      Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8
61      encoding.
62
63   .. versionchanged:: 3.5
64      Writable :term:`bytes-like object` is now accepted.
65
66.. _host_port:
67
68- A pair ``(host, port)`` is used for the :const:`AF_INET` address family,
69  where *host* is a string representing either a hostname in Internet domain
70  notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``,
71  and *port* is an integer.
72
73  - For IPv4 addresses, two special forms are accepted instead of a host
74    address: ``''`` represents :const:`INADDR_ANY`, which is used to bind to all
75    interfaces, and the string ``'<broadcast>'`` represents
76    :const:`INADDR_BROADCAST`.  This behavior is not compatible with IPv6,
77    therefore, you may want to avoid these if you intend to support IPv6 with your
78    Python programs.
79
80- For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
81  scopeid)`` is used, where *flowinfo* and *scopeid* represent the ``sin6_flowinfo``
82  and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C.  For
83  :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for
84  backward compatibility.  Note, however, omission of *scopeid* can cause problems
85  in manipulating scoped IPv6 addresses.
86
87  .. versionchanged:: 3.7
88     For multicast addresses (with *scopeid* meaningful) *address* may not contain
89     ``%scope`` (or ``zone id``) part. This information is superfluous and may
90     be safely omitted (recommended).
91
92- :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``.
93
94- Linux-only support for TIPC is available using the :const:`AF_TIPC`
95  address family.  TIPC is an open, non-IP based networked protocol designed
96  for use in clustered computer environments.  Addresses are represented by a
97  tuple, and the fields depend on the address type. The general tuple form is
98  ``(addr_type, v1, v2, v3 [, scope])``, where:
99
100  - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`,
101    or :const:`TIPC_ADDR_ID`.
102  - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, and
103    :const:`TIPC_NODE_SCOPE`.
104  - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is
105    the port identifier, and *v3* should be 0.
106
107    If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2*
108    is the lower port number, and *v3* is the upper port number.
109
110    If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
111    reference, and *v3* should be set to 0.
112
113- A tuple ``(interface, )`` is used for the :const:`AF_CAN` address family,
114  where *interface* is a string representing a network interface name like
115  ``'can0'``. The network interface name ``''`` can be used to receive packets
116  from all network interfaces of this family.
117
118  - :const:`CAN_ISOTP` protocol require a tuple ``(interface, rx_addr, tx_addr)``
119    where both additional parameters are unsigned long integer that represent a
120    CAN identifier (standard or extended).
121
122- A string or a tuple ``(id, unit)`` is used for the :const:`SYSPROTO_CONTROL`
123  protocol of the :const:`PF_SYSTEM` family. The string is the name of a
124  kernel control using a dynamically-assigned ID. The tuple can be used if ID
125  and unit number of the kernel control are known or if a registered ID is
126  used.
127
128  .. versionadded:: 3.3
129
130- :const:`AF_BLUETOOTH` supports the following protocols and address
131  formats:
132
133  - :const:`BTPROTO_L2CAP` accepts ``(bdaddr, psm)`` where ``bdaddr`` is
134    the Bluetooth address as a string and ``psm`` is an integer.
135
136  - :const:`BTPROTO_RFCOMM` accepts ``(bdaddr, channel)`` where ``bdaddr``
137    is the Bluetooth address as a string and ``channel`` is an integer.
138
139  - :const:`BTPROTO_HCI` accepts ``(device_id,)`` where ``device_id`` is
140    either an integer or a string with the Bluetooth address of the
141    interface. (This depends on your OS; NetBSD and DragonFlyBSD expect
142    a Bluetooth address while everything else expects an integer.)
143
144    .. versionchanged:: 3.2
145       NetBSD and DragonFlyBSD support added.
146
147  - :const:`BTPROTO_SCO` accepts ``bdaddr`` where ``bdaddr`` is a
148    :class:`bytes` object containing the Bluetooth address in a
149    string format. (ex. ``b'12:23:34:45:56:67'``) This protocol is not
150    supported under FreeBSD.
151
152- :const:`AF_ALG` is a Linux-only socket based interface to Kernel
153  cryptography. An algorithm socket is configured with a tuple of two to four
154  elements ``(type, name [, feat [, mask]])``, where:
155
156  - *type* is the algorithm type as string, e.g. ``aead``, ``hash``,
157    ``skcipher`` or ``rng``.
158
159  - *name* is the algorithm name and operation mode as string, e.g.
160    ``sha256``, ``hmac(sha256)``, ``cbc(aes)`` or ``drbg_nopr_ctr_aes256``.
161
162  - *feat* and *mask* are unsigned 32bit integers.
163
164  .. availability:: Linux 2.6.38, some algorithm types require more recent Kernels.
165
166  .. versionadded:: 3.6
167
168- :const:`AF_VSOCK` allows communication between virtual machines and
169  their hosts. The sockets are represented as a ``(CID, port)`` tuple
170  where the context ID or CID and port are integers.
171
172  .. availability:: Linux >= 4.8 QEMU >= 2.8 ESX >= 4.0 ESX Workstation >= 6.5.
173
174  .. versionadded:: 3.7
175
176- :const:`AF_PACKET` is a low-level interface directly to network devices.
177  The packets are represented by the tuple
178  ``(ifname, proto[, pkttype[, hatype[, addr]]])`` where:
179
180  - *ifname* - String specifying the device name.
181  - *proto* - An in network-byte-order integer specifying the Ethernet
182    protocol number.
183  - *pkttype* - Optional integer specifying the packet type:
184
185    - ``PACKET_HOST`` (the default) - Packet addressed to the local host.
186    - ``PACKET_BROADCAST`` - Physical-layer broadcast packet.
187    - ``PACKET_MULTIHOST`` - Packet sent to a physical-layer multicast address.
188    - ``PACKET_OTHERHOST`` - Packet to some other host that has been caught by
189      a device driver in promiscuous mode.
190    - ``PACKET_OUTGOING`` - Packet originating from the local host that is
191      looped back to a packet socket.
192  - *hatype* - Optional integer specifying the ARP hardware address type.
193  - *addr* - Optional bytes-like object specifying the hardware physical
194    address, whose interpretation depends on the device.
195
196If you use a hostname in the *host* portion of IPv4/v6 socket address, the
197program may show a nondeterministic behavior, as Python uses the first address
198returned from the DNS resolution.  The socket address will be resolved
199differently into an actual IPv4/v6 address, depending on the results from DNS
200resolution and/or the host configuration.  For deterministic behavior use a
201numeric address in *host* portion.
202
203All errors raise exceptions.  The normal exceptions for invalid argument types
204and out-of-memory conditions can be raised; starting from Python 3.3, errors
205related to socket or address semantics raise :exc:`OSError` or one of its
206subclasses (they used to raise :exc:`socket.error`).
207
208Non-blocking mode is supported through :meth:`~socket.setblocking`.  A
209generalization of this based on timeouts is supported through
210:meth:`~socket.settimeout`.
211
212
213Module contents
214---------------
215
216The module :mod:`socket` exports the following elements.
217
218
219Exceptions
220^^^^^^^^^^
221
222.. exception:: error
223
224   A deprecated alias of :exc:`OSError`.
225
226   .. versionchanged:: 3.3
227      Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
228
229
230.. exception:: herror
231
232   A subclass of :exc:`OSError`, this exception is raised for
233   address-related errors, i.e. for functions that use *h_errno* in the POSIX
234   C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
235   The accompanying value is a pair ``(h_errno, string)`` representing an
236   error returned by a library call.  *h_errno* is a numeric value, while
237   *string* represents the description of *h_errno*, as returned by the
238   :c:func:`hstrerror` C function.
239
240   .. versionchanged:: 3.3
241      This class was made a subclass of :exc:`OSError`.
242
243.. exception:: gaierror
244
245   A subclass of :exc:`OSError`, this exception is raised for
246   address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
247   The accompanying value is a pair ``(error, string)`` representing an error
248   returned by a library call.  *string* represents the description of
249   *error*, as returned by the :c:func:`gai_strerror` C function.  The
250   numeric *error* value will match one of the :const:`EAI_\*` constants
251   defined in this module.
252
253   .. versionchanged:: 3.3
254      This class was made a subclass of :exc:`OSError`.
255
256.. exception:: timeout
257
258   A subclass of :exc:`OSError`, this exception is raised when a timeout
259   occurs on a socket which has had timeouts enabled via a prior call to
260   :meth:`~socket.settimeout` (or implicitly through
261   :func:`~socket.setdefaulttimeout`).  The accompanying value is a string
262   whose value is currently always "timed out".
263
264   .. versionchanged:: 3.3
265      This class was made a subclass of :exc:`OSError`.
266
267
268Constants
269^^^^^^^^^
270
271   The AF_* and SOCK_* constants are now :class:`AddressFamily` and
272   :class:`SocketKind` :class:`.IntEnum` collections.
273
274   .. versionadded:: 3.4
275
276.. data:: AF_UNIX
277          AF_INET
278          AF_INET6
279
280   These constants represent the address (and protocol) families, used for the
281   first argument to :func:`.socket`.  If the :const:`AF_UNIX` constant is not
282   defined then this protocol is unsupported.  More constants may be available
283   depending on the system.
284
285
286.. data:: SOCK_STREAM
287          SOCK_DGRAM
288          SOCK_RAW
289          SOCK_RDM
290          SOCK_SEQPACKET
291
292   These constants represent the socket types, used for the second argument to
293   :func:`.socket`.  More constants may be available depending on the system.
294   (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
295   useful.)
296
297.. data:: SOCK_CLOEXEC
298          SOCK_NONBLOCK
299
300   These two constants, if defined, can be combined with the socket types and
301   allow you to set some flags atomically (thus avoiding possible race
302   conditions and the need for separate calls).
303
304   .. seealso::
305
306      `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
307      for a more thorough explanation.
308
309   .. availability:: Linux >= 2.6.27.
310
311   .. versionadded:: 3.2
312
313.. data:: SO_*
314          SOMAXCONN
315          MSG_*
316          SOL_*
317          SCM_*
318          IPPROTO_*
319          IPPORT_*
320          INADDR_*
321          IP_*
322          IPV6_*
323          EAI_*
324          AI_*
325          NI_*
326          TCP_*
327
328   Many constants of these forms, documented in the Unix documentation on sockets
329   and/or the IP protocol, are also defined in the socket module. They are
330   generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
331   methods of socket objects.  In most cases, only those symbols that are defined
332   in the Unix header files are defined; for a few symbols, default values are
333   provided.
334
335   .. versionchanged:: 3.6
336      ``SO_DOMAIN``, ``SO_PROTOCOL``, ``SO_PEERSEC``, ``SO_PASSSEC``,
337      ``TCP_USER_TIMEOUT``, ``TCP_CONGESTION`` were added.
338
339   .. versionchanged:: 3.6.5
340      On Windows, ``TCP_FASTOPEN``, ``TCP_KEEPCNT`` appear if run-time Windows
341      supports.
342
343   .. versionchanged:: 3.7
344      ``TCP_NOTSENT_LOWAT`` was added.
345
346      On Windows, ``TCP_KEEPIDLE``, ``TCP_KEEPINTVL`` appear if run-time Windows
347      supports.
348
349.. data:: AF_CAN
350          PF_CAN
351          SOL_CAN_*
352          CAN_*
353
354   Many constants of these forms, documented in the Linux documentation, are
355   also defined in the socket module.
356
357   .. availability:: Linux >= 2.6.25.
358
359   .. versionadded:: 3.3
360
361.. data:: CAN_BCM
362          CAN_BCM_*
363
364   CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol.
365   Broadcast manager constants, documented in the Linux documentation, are also
366   defined in the socket module.
367
368   .. availability:: Linux >= 2.6.25.
369
370   .. versionadded:: 3.4
371
372.. data:: CAN_RAW_FD_FRAMES
373
374   Enables CAN FD support in a CAN_RAW socket. This is disabled by default.
375   This allows your application to send both CAN and CAN FD frames; however,
376   you must accept both CAN and CAN FD frames when reading from the socket.
377
378   This constant is documented in the Linux documentation.
379
380   .. availability:: Linux >= 3.6.
381
382   .. versionadded:: 3.5
383
384.. data:: CAN_ISOTP
385
386   CAN_ISOTP, in the CAN protocol family, is the ISO-TP (ISO 15765-2) protocol.
387   ISO-TP constants, documented in the Linux documentation.
388
389   .. availability:: Linux >= 2.6.25.
390
391   .. versionadded:: 3.7
392
393
394.. data:: AF_PACKET
395          PF_PACKET
396          PACKET_*
397
398   Many constants of these forms, documented in the Linux documentation, are
399   also defined in the socket module.
400
401   .. availability:: Linux >= 2.2.
402
403
404.. data:: AF_RDS
405          PF_RDS
406          SOL_RDS
407          RDS_*
408
409   Many constants of these forms, documented in the Linux documentation, are
410   also defined in the socket module.
411
412   .. availability:: Linux >= 2.6.30.
413
414   .. versionadded:: 3.3
415
416
417.. data:: SIO_RCVALL
418          SIO_KEEPALIVE_VALS
419          SIO_LOOPBACK_FAST_PATH
420          RCVALL_*
421
422   Constants for Windows' WSAIoctl(). The constants are used as arguments to the
423   :meth:`~socket.socket.ioctl` method of socket objects.
424
425   .. versionchanged:: 3.6
426      ``SIO_LOOPBACK_FAST_PATH`` was added.
427
428
429.. data:: TIPC_*
430
431   TIPC related constants, matching the ones exported by the C socket API. See
432   the TIPC documentation for more information.
433
434.. data:: AF_ALG
435          SOL_ALG
436          ALG_*
437
438   Constants for Linux Kernel cryptography.
439
440   .. availability:: Linux >= 2.6.38.
441
442   .. versionadded:: 3.6
443
444
445.. data:: AF_VSOCK
446          IOCTL_VM_SOCKETS_GET_LOCAL_CID
447          VMADDR*
448          SO_VM*
449
450   Constants for Linux host/guest communication.
451
452   .. availability:: Linux >= 4.8.
453
454   .. versionadded:: 3.7
455
456.. data:: AF_LINK
457
458  .. availability:: BSD, OSX.
459
460  .. versionadded:: 3.4
461
462.. data:: has_ipv6
463
464   This constant contains a boolean value which indicates if IPv6 is supported on
465   this platform.
466
467.. data:: BDADDR_ANY
468          BDADDR_LOCAL
469
470   These are string constants containing Bluetooth addresses with special
471   meanings. For example, :const:`BDADDR_ANY` can be used to indicate
472   any address when specifying the binding socket with
473   :const:`BTPROTO_RFCOMM`.
474
475.. data:: HCI_FILTER
476          HCI_TIME_STAMP
477          HCI_DATA_DIR
478
479   For use with :const:`BTPROTO_HCI`. :const:`HCI_FILTER` is not
480   available for NetBSD or DragonFlyBSD. :const:`HCI_TIME_STAMP` and
481   :const:`HCI_DATA_DIR` are not available for FreeBSD, NetBSD, or
482   DragonFlyBSD.
483
484Functions
485^^^^^^^^^
486
487Creating sockets
488''''''''''''''''
489
490The following functions all create :ref:`socket objects <socket-objects>`.
491
492
493.. function:: socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
494
495   Create a new socket using the given address family, socket type and protocol
496   number.  The address family should be :const:`AF_INET` (the default),
497   :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN`, :const:`AF_PACKET`,
498   or :const:`AF_RDS`. The socket type should be :const:`SOCK_STREAM` (the
499   default), :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other
500   ``SOCK_`` constants. The protocol number is usually zero and may be omitted
501   or in the case where the address family is :const:`AF_CAN` the protocol
502   should be one of :const:`CAN_RAW`, :const:`CAN_BCM` or :const:`CAN_ISOTP`.
503
504   If *fileno* is specified, the values for *family*, *type*, and *proto* are
505   auto-detected from the specified file descriptor.  Auto-detection can be
506   overruled by calling the function with explicit *family*, *type*, or *proto*
507   arguments.  This only affects how Python represents e.g. the return value
508   of :meth:`socket.getpeername` but not the actual OS resource.  Unlike
509   :func:`socket.fromfd`, *fileno* will return the same socket and not a
510   duplicate. This may help close a detached socket using
511   :meth:`socket.close()`.
512
513   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
514
515   .. versionchanged:: 3.3
516      The AF_CAN family was added.
517      The AF_RDS family was added.
518
519   .. versionchanged:: 3.4
520       The CAN_BCM protocol was added.
521
522   .. versionchanged:: 3.4
523      The returned socket is now non-inheritable.
524
525   .. versionchanged:: 3.7
526       The CAN_ISOTP protocol was added.
527
528   .. versionchanged:: 3.7
529      When :const:`SOCK_NONBLOCK` or :const:`SOCK_CLOEXEC`
530      bit flags are applied to *type* they are cleared, and
531      :attr:`socket.type` will not reflect them.  They are still passed
532      to the underlying system `socket()` call.  Therefore,
533
534      ::
535
536          sock = socket.socket(
537              socket.AF_INET,
538              socket.SOCK_STREAM | socket.SOCK_NONBLOCK)
539
540      will still create a non-blocking socket on OSes that support
541      ``SOCK_NONBLOCK``, but ``sock.type`` will be set to
542      ``socket.SOCK_STREAM``.
543
544.. function:: socketpair([family[, type[, proto]]])
545
546   Build a pair of connected socket objects using the given address family, socket
547   type, and protocol number.  Address family, socket type, and protocol number are
548   as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
549   if defined on the platform; otherwise, the default is :const:`AF_INET`.
550
551   The newly created sockets are :ref:`non-inheritable <fd_inheritance>`.
552
553   .. versionchanged:: 3.2
554      The returned socket objects now support the whole socket API, rather
555      than a subset.
556
557   .. versionchanged:: 3.4
558      The returned sockets are now non-inheritable.
559
560   .. versionchanged:: 3.5
561      Windows support added.
562
563
564.. function:: create_connection(address[, timeout[, source_address]])
565
566   Connect to a TCP service listening on the Internet *address* (a 2-tuple
567   ``(host, port)``), and return the socket object.  This is a higher-level
568   function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
569   it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
570   and then try to connect to all possible addresses in turn until a
571   connection succeeds.  This makes it easy to write clients that are
572   compatible to both IPv4 and IPv6.
573
574   Passing the optional *timeout* parameter will set the timeout on the
575   socket instance before attempting to connect.  If no *timeout* is
576   supplied, the global default timeout setting returned by
577   :func:`getdefaulttimeout` is used.
578
579   If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
580   socket to bind to as its source address before connecting.  If host or port
581   are '' or 0 respectively the OS default behavior will be used.
582
583   .. versionchanged:: 3.2
584      *source_address* was added.
585
586
587.. function:: fromfd(fd, family, type, proto=0)
588
589   Duplicate the file descriptor *fd* (an integer as returned by a file object's
590   :meth:`fileno` method) and build a socket object from the result.  Address
591   family, socket type and protocol number are as for the :func:`.socket` function
592   above. The file descriptor should refer to a socket, but this is not checked ---
593   subsequent operations on the object may fail if the file descriptor is invalid.
594   This function is rarely needed, but can be used to get or set socket options on
595   a socket passed to a program as standard input or output (such as a server
596   started by the Unix inet daemon).  The socket is assumed to be in blocking mode.
597
598   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
599
600   .. versionchanged:: 3.4
601      The returned socket is now non-inheritable.
602
603
604.. function:: fromshare(data)
605
606   Instantiate a socket from data obtained from the :meth:`socket.share`
607   method.  The socket is assumed to be in blocking mode.
608
609   .. availability:: Windows.
610
611   .. versionadded:: 3.3
612
613
614.. data:: SocketType
615
616   This is a Python type object that represents the socket object type. It is the
617   same as ``type(socket(...))``.
618
619
620Other functions
621'''''''''''''''
622
623The :mod:`socket` module also offers various network-related services:
624
625
626.. function:: close(fd)
627
628   Close a socket file descriptor. This is like :func:`os.close`, but for
629   sockets. On some platforms (most noticeable Windows) :func:`os.close`
630   does not work for socket file descriptors.
631
632   .. versionadded:: 3.7
633
634.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
635
636   Translate the *host*/*port* argument into a sequence of 5-tuples that contain
637   all the necessary arguments for creating a socket connected to that service.
638   *host* is a domain name, a string representation of an IPv4/v6 address
639   or ``None``. *port* is a string service name such as ``'http'``, a numeric
640   port number or ``None``.  By passing ``None`` as the value of *host*
641   and *port*, you can pass ``NULL`` to the underlying C API.
642
643   The *family*, *type* and *proto* arguments can be optionally specified
644   in order to narrow the list of addresses returned.  Passing zero as a
645   value for each of these arguments selects the full range of results.
646   The *flags* argument can be one or several of the ``AI_*`` constants,
647   and will influence how results are computed and returned.
648   For example, :const:`AI_NUMERICHOST` will disable domain name resolution
649   and will raise an error if *host* is a domain name.
650
651   The function returns a list of 5-tuples with the following structure:
652
653   ``(family, type, proto, canonname, sockaddr)``
654
655   In these tuples, *family*, *type*, *proto* are all integers and are
656   meant to be passed to the :func:`.socket` function.  *canonname* will be
657   a string representing the canonical name of the *host* if
658   :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
659   will be empty.  *sockaddr* is a tuple describing a socket address, whose
660   format depends on the returned *family* (a ``(address, port)`` 2-tuple for
661   :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
662   :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
663   method.
664
665   The following example fetches address information for a hypothetical TCP
666   connection to ``example.org`` on port 80 (results may differ on your
667   system if IPv6 isn't enabled)::
668
669      >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
670      [(<AddressFamily.AF_INET6: 10>, <SocketType.SOCK_STREAM: 1>,
671       6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
672       (<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>,
673       6, '', ('93.184.216.34', 80))]
674
675   .. versionchanged:: 3.2
676      parameters can now be passed using keyword arguments.
677
678   .. versionchanged:: 3.7
679      for IPv6 multicast addresses, string representing an address will not
680      contain ``%scope`` part.
681
682.. function:: getfqdn([name])
683
684   Return a fully qualified domain name for *name*. If *name* is omitted or empty,
685   it is interpreted as the local host.  To find the fully qualified name, the
686   hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
687   host, if available.  The first name which includes a period is selected.  In
688   case no fully qualified domain name is available, the hostname as returned by
689   :func:`gethostname` is returned.
690
691
692.. function:: gethostbyname(hostname)
693
694   Translate a host name to IPv4 address format.  The IPv4 address is returned as a
695   string, such as  ``'100.50.200.5'``.  If the host name is an IPv4 address itself
696   it is returned unchanged.  See :func:`gethostbyname_ex` for a more complete
697   interface. :func:`gethostbyname` does not support IPv6 name resolution, and
698   :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
699
700
701.. function:: gethostbyname_ex(hostname)
702
703   Translate a host name to IPv4 address format, extended interface. Return a
704   triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
705   host name responding to the given *ip_address*, *aliaslist* is a (possibly
706   empty) list of alternative host names for the same address, and *ipaddrlist* is
707   a list of IPv4 addresses for the same interface on the same host (often but not
708   always a single address). :func:`gethostbyname_ex` does not support IPv6 name
709   resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
710   stack support.
711
712
713.. function:: gethostname()
714
715   Return a string containing the hostname of the machine where  the Python
716   interpreter is currently executing.
717
718   Note: :func:`gethostname` doesn't always return the fully qualified domain
719   name; use :func:`getfqdn` for that.
720
721
722.. function:: gethostbyaddr(ip_address)
723
724   Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
725   primary host name responding to the given *ip_address*, *aliaslist* is a
726   (possibly empty) list of alternative host names for the same address, and
727   *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
728   host (most likely containing only a single address). To find the fully qualified
729   domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
730   both IPv4 and IPv6.
731
732
733.. function:: getnameinfo(sockaddr, flags)
734
735   Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
736   on the settings of *flags*, the result can contain a fully-qualified domain name
737   or numeric address representation in *host*.  Similarly, *port* can contain a
738   string port name or a numeric port number.
739
740   For IPv6 addresses, ``%scope`` is appended to the host part if *sockaddr*
741   contains meaningful *scopeid*. Usually this happens for multicast addresses.
742
743.. function:: getprotobyname(protocolname)
744
745   Translate an Internet protocol name (for example, ``'icmp'``) to a constant
746   suitable for passing as the (optional) third argument to the :func:`.socket`
747   function.  This is usually only needed for sockets opened in "raw" mode
748   (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
749   automatically if the protocol is omitted or zero.
750
751
752.. function:: getservbyname(servicename[, protocolname])
753
754   Translate an Internet service name and protocol name to a port number for that
755   service.  The optional protocol name, if given, should be ``'tcp'`` or
756   ``'udp'``, otherwise any protocol will match.
757
758
759.. function:: getservbyport(port[, protocolname])
760
761   Translate an Internet port number and protocol name to a service name for that
762   service.  The optional protocol name, if given, should be ``'tcp'`` or
763   ``'udp'``, otherwise any protocol will match.
764
765
766.. function:: ntohl(x)
767
768   Convert 32-bit positive integers from network to host byte order.  On machines
769   where the host byte order is the same as network byte order, this is a no-op;
770   otherwise, it performs a 4-byte swap operation.
771
772
773.. function:: ntohs(x)
774
775   Convert 16-bit positive integers from network to host byte order.  On machines
776   where the host byte order is the same as network byte order, this is a no-op;
777   otherwise, it performs a 2-byte swap operation.
778
779   .. deprecated:: 3.7
780      In case *x* does not fit in 16-bit unsigned integer, but does fit in a
781      positive C int, it is silently truncated to 16-bit unsigned integer.
782      This silent truncation feature is deprecated, and will raise an
783      exception in future versions of Python.
784
785
786.. function:: htonl(x)
787
788   Convert 32-bit positive integers from host to network byte order.  On machines
789   where the host byte order is the same as network byte order, this is a no-op;
790   otherwise, it performs a 4-byte swap operation.
791
792
793.. function:: htons(x)
794
795   Convert 16-bit positive integers from host to network byte order.  On machines
796   where the host byte order is the same as network byte order, this is a no-op;
797   otherwise, it performs a 2-byte swap operation.
798
799   .. deprecated:: 3.7
800      In case *x* does not fit in 16-bit unsigned integer, but does fit in a
801      positive C int, it is silently truncated to 16-bit unsigned integer.
802      This silent truncation feature is deprecated, and will raise an
803      exception in future versions of Python.
804
805
806.. function:: inet_aton(ip_string)
807
808   Convert an IPv4 address from dotted-quad string format (for example,
809   '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
810   length.  This is useful when conversing with a program that uses the standard C
811   library and needs objects of type :c:type:`struct in_addr`, which is the C type
812   for the 32-bit packed binary this function returns.
813
814   :func:`inet_aton` also accepts strings with less than three dots; see the
815   Unix manual page :manpage:`inet(3)` for details.
816
817   If the IPv4 address string passed to this function is invalid,
818   :exc:`OSError` will be raised. Note that exactly what is valid depends on
819   the underlying C implementation of :c:func:`inet_aton`.
820
821   :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
822   instead for IPv4/v6 dual stack support.
823
824
825.. function:: inet_ntoa(packed_ip)
826
827   Convert a 32-bit packed IPv4 address (a :term:`bytes-like object` four
828   bytes in length) to its standard dotted-quad string representation (for example,
829   '123.45.67.89').  This is useful when conversing with a program that uses the
830   standard C library and needs objects of type :c:type:`struct in_addr`, which
831   is the C type for the 32-bit packed binary data this function takes as an
832   argument.
833
834   If the byte sequence passed to this function is not exactly 4 bytes in
835   length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
836   support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
837   stack support.
838
839   .. versionchanged:: 3.5
840      Writable :term:`bytes-like object` is now accepted.
841
842
843.. function:: inet_pton(address_family, ip_string)
844
845   Convert an IP address from its family-specific string format to a packed,
846   binary format. :func:`inet_pton` is useful when a library or network protocol
847   calls for an object of type :c:type:`struct in_addr` (similar to
848   :func:`inet_aton`) or :c:type:`struct in6_addr`.
849
850   Supported values for *address_family* are currently :const:`AF_INET` and
851   :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
852   :exc:`OSError` will be raised. Note that exactly what is valid depends on
853   both the value of *address_family* and the underlying implementation of
854   :c:func:`inet_pton`.
855
856   .. availability:: Unix (maybe not all platforms), Windows.
857
858   .. versionchanged:: 3.4
859      Windows support added
860
861
862.. function:: inet_ntop(address_family, packed_ip)
863
864   Convert a packed IP address (a :term:`bytes-like object` of some number of
865   bytes) to its standard, family-specific string representation (for
866   example, ``'7.10.0.5'`` or ``'5aef:2b::8'``).
867   :func:`inet_ntop` is useful when a library or network protocol returns an
868   object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`) or
869   :c:type:`struct in6_addr`.
870
871   Supported values for *address_family* are currently :const:`AF_INET` and
872   :const:`AF_INET6`. If the bytes object *packed_ip* is not the correct
873   length for the specified address family, :exc:`ValueError` will be raised.
874   :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
875
876   .. availability:: Unix (maybe not all platforms), Windows.
877
878   .. versionchanged:: 3.4
879      Windows support added
880
881   .. versionchanged:: 3.5
882      Writable :term:`bytes-like object` is now accepted.
883
884
885..
886   XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
887   non-Unix platforms?  The old (obsolete?) 4.2BSD form of the
888   interface, in which struct msghdr has no msg_control or
889   msg_controllen members, is not currently supported.
890
891.. function:: CMSG_LEN(length)
892
893   Return the total length, without trailing padding, of an ancillary
894   data item with associated data of the given *length*.  This value
895   can often be used as the buffer size for :meth:`~socket.recvmsg` to
896   receive a single item of ancillary data, but :rfc:`3542` requires
897   portable applications to use :func:`CMSG_SPACE` and thus include
898   space for padding, even when the item will be the last in the
899   buffer.  Raises :exc:`OverflowError` if *length* is outside the
900   permissible range of values.
901
902   .. availability:: most Unix platforms, possibly others.
903
904   .. versionadded:: 3.3
905
906
907.. function:: CMSG_SPACE(length)
908
909   Return the buffer size needed for :meth:`~socket.recvmsg` to
910   receive an ancillary data item with associated data of the given
911   *length*, along with any trailing padding.  The buffer space needed
912   to receive multiple items is the sum of the :func:`CMSG_SPACE`
913   values for their associated data lengths.  Raises
914   :exc:`OverflowError` if *length* is outside the permissible range
915   of values.
916
917   Note that some systems might support ancillary data without
918   providing this function.  Also note that setting the buffer size
919   using the results of this function may not precisely limit the
920   amount of ancillary data that can be received, since additional
921   data may be able to fit into the padding area.
922
923   .. availability:: most Unix platforms, possibly others.
924
925   .. versionadded:: 3.3
926
927
928.. function:: getdefaulttimeout()
929
930   Return the default timeout in seconds (float) for new socket objects. A value
931   of ``None`` indicates that new socket objects have no timeout. When the socket
932   module is first imported, the default is ``None``.
933
934
935.. function:: setdefaulttimeout(timeout)
936
937   Set the default timeout in seconds (float) for new socket objects.  When
938   the socket module is first imported, the default is ``None``.  See
939   :meth:`~socket.settimeout` for possible values and their respective
940   meanings.
941
942
943.. function:: sethostname(name)
944
945   Set the machine's hostname to *name*.  This will raise an
946   :exc:`OSError` if you don't have enough rights.
947
948   .. availability:: Unix.
949
950   .. versionadded:: 3.3
951
952
953.. function:: if_nameindex()
954
955   Return a list of network interface information
956   (index int, name string) tuples.
957   :exc:`OSError` if the system call fails.
958
959   .. availability:: Unix.
960
961   .. versionadded:: 3.3
962
963
964.. function:: if_nametoindex(if_name)
965
966   Return a network interface index number corresponding to an
967   interface name.
968   :exc:`OSError` if no interface with the given name exists.
969
970   .. availability:: Unix.
971
972   .. versionadded:: 3.3
973
974
975.. function:: if_indextoname(if_index)
976
977   Return a network interface name corresponding to an
978   interface index number.
979   :exc:`OSError` if no interface with the given index exists.
980
981   .. availability:: Unix.
982
983   .. versionadded:: 3.3
984
985
986.. _socket-objects:
987
988Socket Objects
989--------------
990
991Socket objects have the following methods.  Except for
992:meth:`~socket.makefile`, these correspond to Unix system calls applicable
993to sockets.
994
995.. versionchanged:: 3.2
996   Support for the :term:`context manager` protocol was added.  Exiting the
997   context manager is equivalent to calling :meth:`~socket.close`.
998
999
1000.. method:: socket.accept()
1001
1002   Accept a connection. The socket must be bound to an address and listening for
1003   connections. The return value is a pair ``(conn, address)`` where *conn* is a
1004   *new* socket object usable to send and receive data on the connection, and
1005   *address* is the address bound to the socket on the other end of the connection.
1006
1007   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
1008
1009   .. versionchanged:: 3.4
1010      The socket is now non-inheritable.
1011
1012   .. versionchanged:: 3.5
1013      If the system call is interrupted and the signal handler does not raise
1014      an exception, the method now retries the system call instead of raising
1015      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1016
1017
1018.. method:: socket.bind(address)
1019
1020   Bind the socket to *address*.  The socket must not already be bound. (The format
1021   of *address* depends on the address family --- see above.)
1022
1023
1024.. method:: socket.close()
1025
1026   Mark the socket closed.  The underlying system resource (e.g. a file
1027   descriptor) is also closed when all file objects from :meth:`makefile()`
1028   are closed.  Once that happens, all future operations on the socket
1029   object will fail. The remote end will receive no more data (after
1030   queued data is flushed).
1031
1032   Sockets are automatically closed when they are garbage-collected, but
1033   it is recommended to :meth:`close` them explicitly, or to use a
1034   :keyword:`with` statement around them.
1035
1036   .. versionchanged:: 3.6
1037      :exc:`OSError` is now raised if an error occurs when the underlying
1038      :c:func:`close` call is made.
1039
1040   .. note::
1041
1042      :meth:`close()` releases the resource associated with a connection but
1043      does not necessarily close the connection immediately.  If you want
1044      to close the connection in a timely fashion, call :meth:`shutdown()`
1045      before :meth:`close()`.
1046
1047
1048.. method:: socket.connect(address)
1049
1050   Connect to a remote socket at *address*. (The format of *address* depends on the
1051   address family --- see above.)
1052
1053   If the connection is interrupted by a signal, the method waits until the
1054   connection completes, or raise a :exc:`socket.timeout` on timeout, if the
1055   signal handler doesn't raise an exception and the socket is blocking or has
1056   a timeout. For non-blocking sockets, the method raises an
1057   :exc:`InterruptedError` exception if the connection is interrupted by a
1058   signal (or the exception raised by the signal handler).
1059
1060   .. versionchanged:: 3.5
1061      The method now waits until the connection completes instead of raising an
1062      :exc:`InterruptedError` exception if the connection is interrupted by a
1063      signal, the signal handler doesn't raise an exception and the socket is
1064      blocking or has a timeout (see the :pep:`475` for the rationale).
1065
1066
1067.. method:: socket.connect_ex(address)
1068
1069   Like ``connect(address)``, but return an error indicator instead of raising an
1070   exception for errors returned by the C-level :c:func:`connect` call (other
1071   problems, such as "host not found," can still raise exceptions).  The error
1072   indicator is ``0`` if the operation succeeded, otherwise the value of the
1073   :c:data:`errno` variable.  This is useful to support, for example, asynchronous
1074   connects.
1075
1076
1077.. method:: socket.detach()
1078
1079   Put the socket object into closed state without actually closing the
1080   underlying file descriptor.  The file descriptor is returned, and can
1081   be reused for other purposes.
1082
1083   .. versionadded:: 3.2
1084
1085
1086.. method:: socket.dup()
1087
1088   Duplicate the socket.
1089
1090   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
1091
1092   .. versionchanged:: 3.4
1093      The socket is now non-inheritable.
1094
1095
1096.. method:: socket.fileno()
1097
1098   Return the socket's file descriptor (a small integer), or -1 on failure. This
1099   is useful with :func:`select.select`.
1100
1101   Under Windows the small integer returned by this method cannot be used where a
1102   file descriptor can be used (such as :func:`os.fdopen`).  Unix does not have
1103   this limitation.
1104
1105.. method:: socket.get_inheritable()
1106
1107   Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1108   descriptor or socket's handle: ``True`` if the socket can be inherited in
1109   child processes, ``False`` if it cannot.
1110
1111   .. versionadded:: 3.4
1112
1113
1114.. method:: socket.getpeername()
1115
1116   Return the remote address to which the socket is connected.  This is useful to
1117   find out the port number of a remote IPv4/v6 socket, for instance. (The format
1118   of the address returned depends on the address family --- see above.)  On some
1119   systems this function is not supported.
1120
1121
1122.. method:: socket.getsockname()
1123
1124   Return the socket's own address.  This is useful to find out the port number of
1125   an IPv4/v6 socket, for instance. (The format of the address returned depends on
1126   the address family --- see above.)
1127
1128
1129.. method:: socket.getsockopt(level, optname[, buflen])
1130
1131   Return the value of the given socket option (see the Unix man page
1132   :manpage:`getsockopt(2)`).  The needed symbolic constants (:const:`SO_\*` etc.)
1133   are defined in this module.  If *buflen* is absent, an integer option is assumed
1134   and its integer value is returned by the function.  If *buflen* is present, it
1135   specifies the maximum length of the buffer used to receive the option in, and
1136   this buffer is returned as a bytes object.  It is up to the caller to decode the
1137   contents of the buffer (see the optional built-in module :mod:`struct` for a way
1138   to decode C structures encoded as byte strings).
1139
1140
1141.. method:: socket.getblocking()
1142
1143   Return ``True`` if socket is in blocking mode, ``False`` if in
1144   non-blocking.
1145
1146   This is equivalent to checking ``socket.gettimeout() == 0``.
1147
1148   .. versionadded:: 3.7
1149
1150
1151.. method:: socket.gettimeout()
1152
1153   Return the timeout in seconds (float) associated with socket operations,
1154   or ``None`` if no timeout is set.  This reflects the last call to
1155   :meth:`setblocking` or :meth:`settimeout`.
1156
1157
1158.. method:: socket.ioctl(control, option)
1159
1160   :platform: Windows
1161
1162   The :meth:`ioctl` method is a limited interface to the WSAIoctl system
1163   interface.  Please refer to the `Win32 documentation
1164   <https://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
1165   information.
1166
1167   On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
1168   functions may be used; they accept a socket object as their first argument.
1169
1170   Currently only the following control codes are supported:
1171   ``SIO_RCVALL``, ``SIO_KEEPALIVE_VALS``, and ``SIO_LOOPBACK_FAST_PATH``.
1172
1173   .. versionchanged:: 3.6
1174      ``SIO_LOOPBACK_FAST_PATH`` was added.
1175
1176.. method:: socket.listen([backlog])
1177
1178   Enable a server to accept connections.  If *backlog* is specified, it must
1179   be at least 0 (if it is lower, it is set to 0); it specifies the number of
1180   unaccepted connections that the system will allow before refusing new
1181   connections. If not specified, a default reasonable value is chosen.
1182
1183   .. versionchanged:: 3.5
1184      The *backlog* parameter is now optional.
1185
1186.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
1187                            errors=None, newline=None)
1188
1189   .. index:: single: I/O control; buffering
1190
1191   Return a :term:`file object` associated with the socket.  The exact returned
1192   type depends on the arguments given to :meth:`makefile`.  These arguments are
1193   interpreted the same way as by the built-in :func:`open` function, except
1194   the only supported *mode* values are ``'r'`` (default), ``'w'`` and ``'b'``.
1195
1196   The socket must be in blocking mode; it can have a timeout, but the file
1197   object's internal buffer may end up in an inconsistent state if a timeout
1198   occurs.
1199
1200   Closing the file object returned by :meth:`makefile` won't close the
1201   original socket unless all other file objects have been closed and
1202   :meth:`socket.close` has been called on the socket object.
1203
1204   .. note::
1205
1206      On Windows, the file-like object created by :meth:`makefile` cannot be
1207      used where a file object with a file descriptor is expected, such as the
1208      stream arguments of :meth:`subprocess.Popen`.
1209
1210
1211.. method:: socket.recv(bufsize[, flags])
1212
1213   Receive data from the socket.  The return value is a bytes object representing the
1214   data received.  The maximum amount of data to be received at once is specified
1215   by *bufsize*.  See the Unix manual page :manpage:`recv(2)` for the meaning of
1216   the optional argument *flags*; it defaults to zero.
1217
1218   .. note::
1219
1220      For best match with hardware and network realities, the value of  *bufsize*
1221      should be a relatively small power of 2, for example, 4096.
1222
1223   .. versionchanged:: 3.5
1224      If the system call is interrupted and the signal handler does not raise
1225      an exception, the method now retries the system call instead of raising
1226      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1227
1228
1229.. method:: socket.recvfrom(bufsize[, flags])
1230
1231   Receive data from the socket.  The return value is a pair ``(bytes, address)``
1232   where *bytes* is a bytes object representing the data received and *address* is the
1233   address of the socket sending the data.  See the Unix manual page
1234   :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
1235   to zero. (The format of *address* depends on the address family --- see above.)
1236
1237   .. versionchanged:: 3.5
1238      If the system call is interrupted and the signal handler does not raise
1239      an exception, the method now retries the system call instead of raising
1240      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1241
1242   .. versionchanged:: 3.7
1243      For multicast IPv6 address, first item of *address* does not contain
1244      ``%scope`` part anymore. In order to get full IPv6 address use
1245      :func:`getnameinfo`.
1246
1247.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
1248
1249   Receive normal data (up to *bufsize* bytes) and ancillary data from
1250   the socket.  The *ancbufsize* argument sets the size in bytes of
1251   the internal buffer used to receive the ancillary data; it defaults
1252   to 0, meaning that no ancillary data will be received.  Appropriate
1253   buffer sizes for ancillary data can be calculated using
1254   :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
1255   into the buffer might be truncated or discarded.  The *flags*
1256   argument defaults to 0 and has the same meaning as for
1257   :meth:`recv`.
1258
1259   The return value is a 4-tuple: ``(data, ancdata, msg_flags,
1260   address)``.  The *data* item is a :class:`bytes` object holding the
1261   non-ancillary data received.  The *ancdata* item is a list of zero
1262   or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
1263   the ancillary data (control messages) received: *cmsg_level* and
1264   *cmsg_type* are integers specifying the protocol level and
1265   protocol-specific type respectively, and *cmsg_data* is a
1266   :class:`bytes` object holding the associated data.  The *msg_flags*
1267   item is the bitwise OR of various flags indicating conditions on
1268   the received message; see your system documentation for details.
1269   If the receiving socket is unconnected, *address* is the address of
1270   the sending socket, if available; otherwise, its value is
1271   unspecified.
1272
1273   On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
1274   pass file descriptors between processes over an :const:`AF_UNIX`
1275   socket.  When this facility is used (it is often restricted to
1276   :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
1277   ancillary data, items of the form ``(socket.SOL_SOCKET,
1278   socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
1279   representing the new file descriptors as a binary array of the
1280   native C :c:type:`int` type.  If :meth:`recvmsg` raises an
1281   exception after the system call returns, it will first attempt to
1282   close any file descriptors received via this mechanism.
1283
1284   Some systems do not indicate the truncated length of ancillary data
1285   items which have been only partially received.  If an item appears
1286   to extend beyond the end of the buffer, :meth:`recvmsg` will issue
1287   a :exc:`RuntimeWarning`, and will return the part of it which is
1288   inside the buffer provided it has not been truncated before the
1289   start of its associated data.
1290
1291   On systems which support the :const:`SCM_RIGHTS` mechanism, the
1292   following function will receive up to *maxfds* file descriptors,
1293   returning the message data and a list containing the descriptors
1294   (while ignoring unexpected conditions such as unrelated control
1295   messages being received).  See also :meth:`sendmsg`. ::
1296
1297      import socket, array
1298
1299      def recv_fds(sock, msglen, maxfds):
1300          fds = array.array("i")   # Array of ints
1301          msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1302          for cmsg_level, cmsg_type, cmsg_data in ancdata:
1303              if cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS:
1304                  # Append data, ignoring any truncated integers at the end.
1305                  fds.frombytes(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
1306          return msg, list(fds)
1307
1308   .. availability:: most Unix platforms, possibly others.
1309
1310   .. versionadded:: 3.3
1311
1312   .. versionchanged:: 3.5
1313      If the system call is interrupted and the signal handler does not raise
1314      an exception, the method now retries the system call instead of raising
1315      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1316
1317
1318.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1319
1320   Receive normal data and ancillary data from the socket, behaving as
1321   :meth:`recvmsg` would, but scatter the non-ancillary data into a
1322   series of buffers instead of returning a new bytes object.  The
1323   *buffers* argument must be an iterable of objects that export
1324   writable buffers (e.g. :class:`bytearray` objects); these will be
1325   filled with successive chunks of the non-ancillary data until it
1326   has all been written or there are no more buffers.  The operating
1327   system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1328   on the number of buffers that can be used.  The *ancbufsize* and
1329   *flags* arguments have the same meaning as for :meth:`recvmsg`.
1330
1331   The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1332   address)``, where *nbytes* is the total number of bytes of
1333   non-ancillary data written into the buffers, and *ancdata*,
1334   *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1335
1336   Example::
1337
1338      >>> import socket
1339      >>> s1, s2 = socket.socketpair()
1340      >>> b1 = bytearray(b'----')
1341      >>> b2 = bytearray(b'0123456789')
1342      >>> b3 = bytearray(b'--------------')
1343      >>> s1.send(b'Mary had a little lamb')
1344      22
1345      >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1346      (22, [], 0, None)
1347      >>> [b1, b2, b3]
1348      [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1349
1350   .. availability:: most Unix platforms, possibly others.
1351
1352   .. versionadded:: 3.3
1353
1354
1355.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1356
1357   Receive data from the socket, writing it into *buffer* instead of creating a
1358   new bytestring.  The return value is a pair ``(nbytes, address)`` where *nbytes* is
1359   the number of bytes received and *address* is the address of the socket sending
1360   the data.  See the Unix manual page :manpage:`recv(2)` for the meaning of the
1361   optional argument *flags*; it defaults to zero.  (The format of *address*
1362   depends on the address family --- see above.)
1363
1364
1365.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1366
1367   Receive up to *nbytes* bytes from the socket, storing the data into a buffer
1368   rather than creating a new bytestring.  If *nbytes* is not specified (or 0),
1369   receive up to the size available in the given buffer.  Returns the number of
1370   bytes received.  See the Unix manual page :manpage:`recv(2)` for the meaning
1371   of the optional argument *flags*; it defaults to zero.
1372
1373
1374.. method:: socket.send(bytes[, flags])
1375
1376   Send data to the socket.  The socket must be connected to a remote socket.  The
1377   optional *flags* argument has the same meaning as for :meth:`recv` above.
1378   Returns the number of bytes sent. Applications are responsible for checking that
1379   all data has been sent; if only some of the data was transmitted, the
1380   application needs to attempt delivery of the remaining data. For further
1381   information on this topic, consult the :ref:`socket-howto`.
1382
1383   .. versionchanged:: 3.5
1384      If the system call is interrupted and the signal handler does not raise
1385      an exception, the method now retries the system call instead of raising
1386      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1387
1388
1389.. method:: socket.sendall(bytes[, flags])
1390
1391   Send data to the socket.  The socket must be connected to a remote socket.  The
1392   optional *flags* argument has the same meaning as for :meth:`recv` above.
1393   Unlike :meth:`send`, this method continues to send data from *bytes* until
1394   either all data has been sent or an error occurs.  ``None`` is returned on
1395   success.  On error, an exception is raised, and there is no way to determine how
1396   much data, if any, was successfully sent.
1397
1398   .. versionchanged:: 3.5
1399      The socket timeout is no more reset each time data is sent successfully.
1400      The socket timeout is now the maximum total duration to send all data.
1401
1402   .. versionchanged:: 3.5
1403      If the system call is interrupted and the signal handler does not raise
1404      an exception, the method now retries the system call instead of raising
1405      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1406
1407
1408.. method:: socket.sendto(bytes, address)
1409            socket.sendto(bytes, flags, address)
1410
1411   Send data to the socket.  The socket should not be connected to a remote socket,
1412   since the destination socket is specified by *address*.  The optional *flags*
1413   argument has the same meaning as for :meth:`recv` above.  Return the number of
1414   bytes sent. (The format of *address* depends on the address family --- see
1415   above.)
1416
1417   .. versionchanged:: 3.5
1418      If the system call is interrupted and the signal handler does not raise
1419      an exception, the method now retries the system call instead of raising
1420      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1421
1422
1423.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1424
1425   Send normal and ancillary data to the socket, gathering the
1426   non-ancillary data from a series of buffers and concatenating it
1427   into a single message.  The *buffers* argument specifies the
1428   non-ancillary data as an iterable of
1429   :term:`bytes-like objects <bytes-like object>`
1430   (e.g. :class:`bytes` objects); the operating system may set a limit
1431   (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1432   that can be used.  The *ancdata* argument specifies the ancillary
1433   data (control messages) as an iterable of zero or more tuples
1434   ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1435   *cmsg_type* are integers specifying the protocol level and
1436   protocol-specific type respectively, and *cmsg_data* is a
1437   bytes-like object holding the associated data.  Note that
1438   some systems (in particular, systems without :func:`CMSG_SPACE`)
1439   might support sending only one control message per call.  The
1440   *flags* argument defaults to 0 and has the same meaning as for
1441   :meth:`send`.  If *address* is supplied and not ``None``, it sets a
1442   destination address for the message.  The return value is the
1443   number of bytes of non-ancillary data sent.
1444
1445   The following function sends the list of file descriptors *fds*
1446   over an :const:`AF_UNIX` socket, on systems which support the
1447   :const:`SCM_RIGHTS` mechanism.  See also :meth:`recvmsg`. ::
1448
1449      import socket, array
1450
1451      def send_fds(sock, msg, fds):
1452          return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1453
1454   .. availability:: most Unix platforms, possibly others.
1455
1456   .. versionadded:: 3.3
1457
1458   .. versionchanged:: 3.5
1459      If the system call is interrupted and the signal handler does not raise
1460      an exception, the method now retries the system call instead of raising
1461      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1462
1463.. method:: socket.sendmsg_afalg([msg], *, op[, iv[, assoclen[, flags]]])
1464
1465   Specialized version of :meth:`~socket.sendmsg` for :const:`AF_ALG` socket.
1466   Set mode, IV, AEAD associated data length and flags for :const:`AF_ALG` socket.
1467
1468   .. availability:: Linux >= 2.6.38.
1469
1470   .. versionadded:: 3.6
1471
1472.. method:: socket.sendfile(file, offset=0, count=None)
1473
1474   Send a file until EOF is reached by using high-performance
1475   :mod:`os.sendfile` and return the total number of bytes which were sent.
1476   *file* must be a regular file object opened in binary mode. If
1477   :mod:`os.sendfile` is not available (e.g. Windows) or *file* is not a
1478   regular file :meth:`send` will be used instead. *offset* tells from where to
1479   start reading the file. If specified, *count* is the total number of bytes
1480   to transmit as opposed to sending the file until EOF is reached. File
1481   position is updated on return or also in case of error in which case
1482   :meth:`file.tell() <io.IOBase.tell>` can be used to figure out the number of
1483   bytes which were sent. The socket must be of :const:`SOCK_STREAM` type.
1484   Non-blocking sockets are not supported.
1485
1486   .. versionadded:: 3.5
1487
1488.. method:: socket.set_inheritable(inheritable)
1489
1490   Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1491   descriptor or socket's handle.
1492
1493   .. versionadded:: 3.4
1494
1495
1496.. method:: socket.setblocking(flag)
1497
1498   Set blocking or non-blocking mode of the socket: if *flag* is false, the
1499   socket is set to non-blocking, else to blocking mode.
1500
1501   This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1502
1503   * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1504
1505   * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
1506
1507   .. versionchanged:: 3.7
1508      The method no longer applies :const:`SOCK_NONBLOCK` flag on
1509      :attr:`socket.type`.
1510
1511
1512.. method:: socket.settimeout(value)
1513
1514   Set a timeout on blocking socket operations.  The *value* argument can be a
1515   nonnegative floating point number expressing seconds, or ``None``.
1516   If a non-zero value is given, subsequent socket operations will raise a
1517   :exc:`timeout` exception if the timeout period *value* has elapsed before
1518   the operation has completed.  If zero is given, the socket is put in
1519   non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
1520
1521   For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
1522
1523   .. versionchanged:: 3.7
1524      The method no longer toggles :const:`SOCK_NONBLOCK` flag on
1525      :attr:`socket.type`.
1526
1527
1528.. method:: socket.setsockopt(level, optname, value: int)
1529.. method:: socket.setsockopt(level, optname, value: buffer)
1530.. method:: socket.setsockopt(level, optname, None, optlen: int)
1531
1532   .. index:: module: struct
1533
1534   Set the value of the given socket option (see the Unix manual page
1535   :manpage:`setsockopt(2)`).  The needed symbolic constants are defined in the
1536   :mod:`socket` module (:const:`SO_\*` etc.).  The value can be an integer,
1537   ``None`` or a :term:`bytes-like object` representing a buffer. In the later
1538   case it is up to the caller to ensure that the bytestring contains the
1539   proper bits (see the optional built-in module :mod:`struct` for a way to
1540   encode C structures as bytestrings). When *value* is set to ``None``,
1541   *optlen* argument is required. It's equivalent to call :c:func:`setsockopt` C
1542   function with ``optval=NULL`` and ``optlen=optlen``.
1543
1544
1545   .. versionchanged:: 3.5
1546      Writable :term:`bytes-like object` is now accepted.
1547
1548   .. versionchanged:: 3.6
1549      setsockopt(level, optname, None, optlen: int) form added.
1550
1551
1552.. method:: socket.shutdown(how)
1553
1554   Shut down one or both halves of the connection.  If *how* is :const:`SHUT_RD`,
1555   further receives are disallowed.  If *how* is :const:`SHUT_WR`, further sends
1556   are disallowed.  If *how* is :const:`SHUT_RDWR`, further sends and receives are
1557   disallowed.
1558
1559
1560.. method:: socket.share(process_id)
1561
1562   Duplicate a socket and prepare it for sharing with a target process.  The
1563   target process must be provided with *process_id*.  The resulting bytes object
1564   can then be passed to the target process using some form of interprocess
1565   communication and the socket can be recreated there using :func:`fromshare`.
1566   Once this method has been called, it is safe to close the socket since
1567   the operating system has already duplicated it for the target process.
1568
1569   .. availability:: Windows.
1570
1571   .. versionadded:: 3.3
1572
1573
1574Note that there are no methods :meth:`read` or :meth:`write`; use
1575:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
1576
1577Socket objects also have these (read-only) attributes that correspond to the
1578values given to the :class:`~socket.socket` constructor.
1579
1580
1581.. attribute:: socket.family
1582
1583   The socket family.
1584
1585
1586.. attribute:: socket.type
1587
1588   The socket type.
1589
1590
1591.. attribute:: socket.proto
1592
1593   The socket protocol.
1594
1595
1596
1597.. _socket-timeouts:
1598
1599Notes on socket timeouts
1600------------------------
1601
1602A socket object can be in one of three modes: blocking, non-blocking, or
1603timeout.  Sockets are by default always created in blocking mode, but this
1604can be changed by calling :func:`setdefaulttimeout`.
1605
1606* In *blocking mode*, operations block until complete or the system returns
1607  an error (such as connection timed out).
1608
1609* In *non-blocking mode*, operations fail (with an error that is unfortunately
1610  system-dependent) if they cannot be completed immediately: functions from the
1611  :mod:`select` can be used to know when and whether a socket is available for
1612  reading or writing.
1613
1614* In *timeout mode*, operations fail if they cannot be completed within the
1615  timeout specified for the socket (they raise a :exc:`timeout` exception)
1616  or if the system returns an error.
1617
1618.. note::
1619   At the operating system level, sockets in *timeout mode* are internally set
1620   in non-blocking mode.  Also, the blocking and timeout modes are shared between
1621   file descriptors and socket objects that refer to the same network endpoint.
1622   This implementation detail can have visible consequences if e.g. you decide
1623   to use the :meth:`~socket.fileno()` of a socket.
1624
1625Timeouts and the ``connect`` method
1626^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1627
1628The :meth:`~socket.connect` operation is also subject to the timeout
1629setting, and in general it is recommended to call :meth:`~socket.settimeout`
1630before calling :meth:`~socket.connect` or pass a timeout parameter to
1631:meth:`create_connection`.  However, the system network stack may also
1632return a connection timeout error of its own regardless of any Python socket
1633timeout setting.
1634
1635Timeouts and the ``accept`` method
1636^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1637
1638If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1639the :meth:`~socket.accept` method inherit that timeout.  Otherwise, the
1640behaviour depends on settings of the listening socket:
1641
1642* if the listening socket is in *blocking mode* or in *timeout mode*,
1643  the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1644
1645* if the listening socket is in *non-blocking mode*, whether the socket
1646  returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1647  is operating system-dependent.  If you want to ensure cross-platform
1648  behaviour, it is recommended you manually override this setting.
1649
1650
1651.. _socket-example:
1652
1653Example
1654-------
1655
1656Here are four minimal example programs using the TCP/IP protocol: a server that
1657echoes all data that it receives back (servicing only one client), and a client
1658using it.  Note that a server must perform the sequence :func:`.socket`,
1659:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1660repeating the :meth:`~socket.accept` to service more than one client), while a
1661client only needs the sequence :func:`.socket`, :meth:`~socket.connect`.  Also
1662note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1663the socket it is listening on but on the new socket returned by
1664:meth:`~socket.accept`.
1665
1666The first two examples support IPv4 only. ::
1667
1668   # Echo server program
1669   import socket
1670
1671   HOST = ''                 # Symbolic name meaning all available interfaces
1672   PORT = 50007              # Arbitrary non-privileged port
1673   with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1674       s.bind((HOST, PORT))
1675       s.listen(1)
1676       conn, addr = s.accept()
1677       with conn:
1678           print('Connected by', addr)
1679           while True:
1680               data = conn.recv(1024)
1681               if not data: break
1682               conn.sendall(data)
1683
1684::
1685
1686   # Echo client program
1687   import socket
1688
1689   HOST = 'daring.cwi.nl'    # The remote host
1690   PORT = 50007              # The same port as used by the server
1691   with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1692       s.connect((HOST, PORT))
1693       s.sendall(b'Hello, world')
1694       data = s.recv(1024)
1695   print('Received', repr(data))
1696
1697The next two examples are identical to the above two, but support both IPv4 and
1698IPv6. The server side will listen to the first address family available (it
1699should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1700precedence and the server may not accept IPv4 traffic. The client side will try
1701to connect to the all addresses returned as a result of the name resolution, and
1702sends traffic to the first one connected successfully. ::
1703
1704   # Echo server program
1705   import socket
1706   import sys
1707
1708   HOST = None               # Symbolic name meaning all available interfaces
1709   PORT = 50007              # Arbitrary non-privileged port
1710   s = None
1711   for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1712                                 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
1713       af, socktype, proto, canonname, sa = res
1714       try:
1715           s = socket.socket(af, socktype, proto)
1716       except OSError as msg:
1717           s = None
1718           continue
1719       try:
1720           s.bind(sa)
1721           s.listen(1)
1722       except OSError as msg:
1723           s.close()
1724           s = None
1725           continue
1726       break
1727   if s is None:
1728       print('could not open socket')
1729       sys.exit(1)
1730   conn, addr = s.accept()
1731   with conn:
1732       print('Connected by', addr)
1733       while True:
1734           data = conn.recv(1024)
1735           if not data: break
1736           conn.send(data)
1737
1738::
1739
1740   # Echo client program
1741   import socket
1742   import sys
1743
1744   HOST = 'daring.cwi.nl'    # The remote host
1745   PORT = 50007              # The same port as used by the server
1746   s = None
1747   for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1748       af, socktype, proto, canonname, sa = res
1749       try:
1750           s = socket.socket(af, socktype, proto)
1751       except OSError as msg:
1752           s = None
1753           continue
1754       try:
1755           s.connect(sa)
1756       except OSError as msg:
1757           s.close()
1758           s = None
1759           continue
1760       break
1761   if s is None:
1762       print('could not open socket')
1763       sys.exit(1)
1764   with s:
1765       s.sendall(b'Hello, world')
1766       data = s.recv(1024)
1767   print('Received', repr(data))
1768
1769
1770The next example shows how to write a very simple network sniffer with raw
1771sockets on Windows. The example requires administrator privileges to modify
1772the interface::
1773
1774   import socket
1775
1776   # the public network interface
1777   HOST = socket.gethostbyname(socket.gethostname())
1778
1779   # create a raw socket and bind it to the public interface
1780   s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1781   s.bind((HOST, 0))
1782
1783   # Include IP headers
1784   s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
1785
1786   # receive all packages
1787   s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
1788
1789   # receive a package
1790   print(s.recvfrom(65565))
1791
1792   # disabled promiscuous mode
1793   s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
1794
1795The next example shows how to use the socket interface to communicate to a CAN
1796network using the raw socket protocol. To use CAN with the broadcast
1797manager protocol instead, open a socket with::
1798
1799    socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1800
1801After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
1802can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
1803their counterparts) on the socket object as usual.
1804
1805This last example might require special privileges::
1806
1807   import socket
1808   import struct
1809
1810
1811   # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
1812
1813   can_frame_fmt = "=IB3x8s"
1814   can_frame_size = struct.calcsize(can_frame_fmt)
1815
1816   def build_can_frame(can_id, data):
1817       can_dlc = len(data)
1818       data = data.ljust(8, b'\x00')
1819       return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1820
1821   def dissect_can_frame(frame):
1822       can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1823       return (can_id, can_dlc, data[:can_dlc])
1824
1825
1826   # create a raw socket and bind it to the 'vcan0' interface
1827   s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1828   s.bind(('vcan0',))
1829
1830   while True:
1831       cf, addr = s.recvfrom(can_frame_size)
1832
1833       print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1834
1835       try:
1836           s.send(cf)
1837       except OSError:
1838           print('Error sending CAN frame')
1839
1840       try:
1841           s.send(build_can_frame(0x01, b'\x01\x02\x03'))
1842       except OSError:
1843           print('Error sending CAN frame')
1844
1845Running an example several times with too small delay between executions, could
1846lead to this error::
1847
1848   OSError: [Errno 98] Address already in use
1849
1850This is because the previous execution has left the socket in a ``TIME_WAIT``
1851state, and can't be immediately reused.
1852
1853There is a :mod:`socket` flag to set, in order to prevent this,
1854:data:`socket.SO_REUSEADDR`::
1855
1856   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1857   s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1858   s.bind((HOST, PORT))
1859
1860the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1861``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1862
1863
1864.. seealso::
1865
1866   For an introduction to socket programming (in C), see the following papers:
1867
1868   - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1869
1870   - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J.  Leffler et
1871     al,
1872
1873   both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1874   PS1:7 and PS1:8).  The platform-specific reference material for the various
1875   socket-related system calls are also a valuable source of information on the
1876   details of socket semantics.  For Unix, refer to the manual pages; for Windows,
1877   see the WinSock (or Winsock 2) specification.  For IPv6-ready APIs, readers may
1878   want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.
1879