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 one 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          sock = socket.socket(
535              socket.AF_INET,
536              socket.SOCK_STREAM | socket.SOCK_NONBLOCK)
537
538      will still create a non-blocking socket on OSes that support
539      ``SOCK_NONBLOCK``, but ``sock.type`` will be set to
540      ``socket.SOCK_STREAM``.
541
542.. function:: socketpair([family[, type[, proto]]])
543
544   Build a pair of connected socket objects using the given address family, socket
545   type, and protocol number.  Address family, socket type, and protocol number are
546   as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
547   if defined on the platform; otherwise, the default is :const:`AF_INET`.
548
549   The newly created sockets are :ref:`non-inheritable <fd_inheritance>`.
550
551   .. versionchanged:: 3.2
552      The returned socket objects now support the whole socket API, rather
553      than a subset.
554
555   .. versionchanged:: 3.4
556      The returned sockets are now non-inheritable.
557
558   .. versionchanged:: 3.5
559      Windows support added.
560
561
562.. function:: create_connection(address[, timeout[, source_address]])
563
564   Connect to a TCP service listening on the Internet *address* (a 2-tuple
565   ``(host, port)``), and return the socket object.  This is a higher-level
566   function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
567   it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
568   and then try to connect to all possible addresses in turn until a
569   connection succeeds.  This makes it easy to write clients that are
570   compatible to both IPv4 and IPv6.
571
572   Passing the optional *timeout* parameter will set the timeout on the
573   socket instance before attempting to connect.  If no *timeout* is
574   supplied, the global default timeout setting returned by
575   :func:`getdefaulttimeout` is used.
576
577   If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
578   socket to bind to as its source address before connecting.  If host or port
579   are '' or 0 respectively the OS default behavior will be used.
580
581   .. versionchanged:: 3.2
582      *source_address* was added.
583
584
585.. function:: fromfd(fd, family, type, proto=0)
586
587   Duplicate the file descriptor *fd* (an integer as returned by a file object's
588   :meth:`fileno` method) and build a socket object from the result.  Address
589   family, socket type and protocol number are as for the :func:`.socket` function
590   above. The file descriptor should refer to a socket, but this is not checked ---
591   subsequent operations on the object may fail if the file descriptor is invalid.
592   This function is rarely needed, but can be used to get or set socket options on
593   a socket passed to a program as standard input or output (such as a server
594   started by the Unix inet daemon).  The socket is assumed to be in blocking mode.
595
596   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
597
598   .. versionchanged:: 3.4
599      The returned socket is now non-inheritable.
600
601
602.. function:: fromshare(data)
603
604   Instantiate a socket from data obtained from the :meth:`socket.share`
605   method.  The socket is assumed to be in blocking mode.
606
607   .. availability:: Windows.
608
609   .. versionadded:: 3.3
610
611
612.. data:: SocketType
613
614   This is a Python type object that represents the socket object type. It is the
615   same as ``type(socket(...))``.
616
617
618Other functions
619'''''''''''''''
620
621The :mod:`socket` module also offers various network-related services:
622
623
624.. function:: close(fd)
625
626   Close a socket file descriptor. This is like :func:`os.close`, but for
627   sockets. On some platforms (most noticeable Windows) :func:`os.close`
628   does not work for socket file descriptors.
629
630   .. versionadded:: 3.7
631
632.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
633
634   Translate the *host*/*port* argument into a sequence of 5-tuples that contain
635   all the necessary arguments for creating a socket connected to that service.
636   *host* is a domain name, a string representation of an IPv4/v6 address
637   or ``None``. *port* is a string service name such as ``'http'``, a numeric
638   port number or ``None``.  By passing ``None`` as the value of *host*
639   and *port*, you can pass ``NULL`` to the underlying C API.
640
641   The *family*, *type* and *proto* arguments can be optionally specified
642   in order to narrow the list of addresses returned.  Passing zero as a
643   value for each of these arguments selects the full range of results.
644   The *flags* argument can be one or several of the ``AI_*`` constants,
645   and will influence how results are computed and returned.
646   For example, :const:`AI_NUMERICHOST` will disable domain name resolution
647   and will raise an error if *host* is a domain name.
648
649   The function returns a list of 5-tuples with the following structure:
650
651   ``(family, type, proto, canonname, sockaddr)``
652
653   In these tuples, *family*, *type*, *proto* are all integers and are
654   meant to be passed to the :func:`.socket` function.  *canonname* will be
655   a string representing the canonical name of the *host* if
656   :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
657   will be empty.  *sockaddr* is a tuple describing a socket address, whose
658   format depends on the returned *family* (a ``(address, port)`` 2-tuple for
659   :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
660   :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
661   method.
662
663   The following example fetches address information for a hypothetical TCP
664   connection to ``example.org`` on port 80 (results may differ on your
665   system if IPv6 isn't enabled)::
666
667      >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
668      [(<AddressFamily.AF_INET6: 10>, <SocketType.SOCK_STREAM: 1>,
669       6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
670       (<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>,
671       6, '', ('93.184.216.34', 80))]
672
673   .. versionchanged:: 3.2
674      parameters can now be passed using keyword arguments.
675
676   .. versionchanged:: 3.7
677      for IPv6 multicast addresses, string representing an address will not
678      contain ``%scope`` part.
679
680.. function:: getfqdn([name])
681
682   Return a fully qualified domain name for *name*. If *name* is omitted or empty,
683   it is interpreted as the local host.  To find the fully qualified name, the
684   hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
685   host, if available.  The first name which includes a period is selected.  In
686   case no fully qualified domain name is available, the hostname as returned by
687   :func:`gethostname` is returned.
688
689
690.. function:: gethostbyname(hostname)
691
692   Translate a host name to IPv4 address format.  The IPv4 address is returned as a
693   string, such as  ``'100.50.200.5'``.  If the host name is an IPv4 address itself
694   it is returned unchanged.  See :func:`gethostbyname_ex` for a more complete
695   interface. :func:`gethostbyname` does not support IPv6 name resolution, and
696   :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
697
698
699.. function:: gethostbyname_ex(hostname)
700
701   Translate a host name to IPv4 address format, extended interface. Return a
702   triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
703   host name responding to the given *ip_address*, *aliaslist* is a (possibly
704   empty) list of alternative host names for the same address, and *ipaddrlist* is
705   a list of IPv4 addresses for the same interface on the same host (often but not
706   always a single address). :func:`gethostbyname_ex` does not support IPv6 name
707   resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
708   stack support.
709
710
711.. function:: gethostname()
712
713   Return a string containing the hostname of the machine where  the Python
714   interpreter is currently executing.
715
716   Note: :func:`gethostname` doesn't always return the fully qualified domain
717   name; use :func:`getfqdn` for that.
718
719
720.. function:: gethostbyaddr(ip_address)
721
722   Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
723   primary host name responding to the given *ip_address*, *aliaslist* is a
724   (possibly empty) list of alternative host names for the same address, and
725   *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
726   host (most likely containing only a single address). To find the fully qualified
727   domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
728   both IPv4 and IPv6.
729
730
731.. function:: getnameinfo(sockaddr, flags)
732
733   Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
734   on the settings of *flags*, the result can contain a fully-qualified domain name
735   or numeric address representation in *host*.  Similarly, *port* can contain a
736   string port name or a numeric port number.
737
738   For IPv6 addresses, ``%scope`` is appended to the host part if *sockaddr*
739   contains meaningful *scopeid*. Usually this happens for multicast addresses.
740
741.. function:: getprotobyname(protocolname)
742
743   Translate an Internet protocol name (for example, ``'icmp'``) to a constant
744   suitable for passing as the (optional) third argument to the :func:`.socket`
745   function.  This is usually only needed for sockets opened in "raw" mode
746   (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
747   automatically if the protocol is omitted or zero.
748
749
750.. function:: getservbyname(servicename[, protocolname])
751
752   Translate an Internet service name and protocol name to a port number for that
753   service.  The optional protocol name, if given, should be ``'tcp'`` or
754   ``'udp'``, otherwise any protocol will match.
755
756
757.. function:: getservbyport(port[, protocolname])
758
759   Translate an Internet port number and protocol name to a service name for that
760   service.  The optional protocol name, if given, should be ``'tcp'`` or
761   ``'udp'``, otherwise any protocol will match.
762
763
764.. function:: ntohl(x)
765
766   Convert 32-bit positive integers from network to host byte order.  On machines
767   where the host byte order is the same as network byte order, this is a no-op;
768   otherwise, it performs a 4-byte swap operation.
769
770
771.. function:: ntohs(x)
772
773   Convert 16-bit positive integers from network to host byte order.  On machines
774   where the host byte order is the same as network byte order, this is a no-op;
775   otherwise, it performs a 2-byte swap operation.
776
777   .. deprecated:: 3.7
778      In case *x* does not fit in 16-bit unsigned integer, but does fit in a
779      positive C int, it is silently truncated to 16-bit unsigned integer.
780      This silent truncation feature is deprecated, and will raise an
781      exception in future versions of Python.
782
783
784.. function:: htonl(x)
785
786   Convert 32-bit positive integers from host to network byte order.  On machines
787   where the host byte order is the same as network byte order, this is a no-op;
788   otherwise, it performs a 4-byte swap operation.
789
790
791.. function:: htons(x)
792
793   Convert 16-bit positive integers from host to network byte order.  On machines
794   where the host byte order is the same as network byte order, this is a no-op;
795   otherwise, it performs a 2-byte swap operation.
796
797   .. deprecated:: 3.7
798      In case *x* does not fit in 16-bit unsigned integer, but does fit in a
799      positive C int, it is silently truncated to 16-bit unsigned integer.
800      This silent truncation feature is deprecated, and will raise an
801      exception in future versions of Python.
802
803
804.. function:: inet_aton(ip_string)
805
806   Convert an IPv4 address from dotted-quad string format (for example,
807   '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
808   length.  This is useful when conversing with a program that uses the standard C
809   library and needs objects of type :c:type:`struct in_addr`, which is the C type
810   for the 32-bit packed binary this function returns.
811
812   :func:`inet_aton` also accepts strings with less than three dots; see the
813   Unix manual page :manpage:`inet(3)` for details.
814
815   If the IPv4 address string passed to this function is invalid,
816   :exc:`OSError` will be raised. Note that exactly what is valid depends on
817   the underlying C implementation of :c:func:`inet_aton`.
818
819   :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
820   instead for IPv4/v6 dual stack support.
821
822
823.. function:: inet_ntoa(packed_ip)
824
825   Convert a 32-bit packed IPv4 address (a :term:`bytes-like object` four
826   bytes in length) to its standard dotted-quad string representation (for example,
827   '123.45.67.89').  This is useful when conversing with a program that uses the
828   standard C library and needs objects of type :c:type:`struct in_addr`, which
829   is the C type for the 32-bit packed binary data this function takes as an
830   argument.
831
832   If the byte sequence passed to this function is not exactly 4 bytes in
833   length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
834   support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
835   stack support.
836
837   .. versionchanged:: 3.5
838      Writable :term:`bytes-like object` is now accepted.
839
840
841.. function:: inet_pton(address_family, ip_string)
842
843   Convert an IP address from its family-specific string format to a packed,
844   binary format. :func:`inet_pton` is useful when a library or network protocol
845   calls for an object of type :c:type:`struct in_addr` (similar to
846   :func:`inet_aton`) or :c:type:`struct in6_addr`.
847
848   Supported values for *address_family* are currently :const:`AF_INET` and
849   :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
850   :exc:`OSError` will be raised. Note that exactly what is valid depends on
851   both the value of *address_family* and the underlying implementation of
852   :c:func:`inet_pton`.
853
854   .. availability:: Unix (maybe not all platforms), Windows.
855
856   .. versionchanged:: 3.4
857      Windows support added
858
859
860.. function:: inet_ntop(address_family, packed_ip)
861
862   Convert a packed IP address (a :term:`bytes-like object` of some number of
863   bytes) to its standard, family-specific string representation (for
864   example, ``'7.10.0.5'`` or ``'5aef:2b::8'``).
865   :func:`inet_ntop` is useful when a library or network protocol returns an
866   object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`) or
867   :c:type:`struct in6_addr`.
868
869   Supported values for *address_family* are currently :const:`AF_INET` and
870   :const:`AF_INET6`. If the bytes object *packed_ip* is not the correct
871   length for the specified address family, :exc:`ValueError` will be raised.
872   :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
873
874   .. availability:: Unix (maybe not all platforms), Windows.
875
876   .. versionchanged:: 3.4
877      Windows support added
878
879   .. versionchanged:: 3.5
880      Writable :term:`bytes-like object` is now accepted.
881
882
883..
884   XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
885   non-Unix platforms?  The old (obsolete?) 4.2BSD form of the
886   interface, in which struct msghdr has no msg_control or
887   msg_controllen members, is not currently supported.
888
889.. function:: CMSG_LEN(length)
890
891   Return the total length, without trailing padding, of an ancillary
892   data item with associated data of the given *length*.  This value
893   can often be used as the buffer size for :meth:`~socket.recvmsg` to
894   receive a single item of ancillary data, but :rfc:`3542` requires
895   portable applications to use :func:`CMSG_SPACE` and thus include
896   space for padding, even when the item will be the last in the
897   buffer.  Raises :exc:`OverflowError` if *length* is outside the
898   permissible range of values.
899
900   .. availability:: most Unix platforms, possibly others.
901
902   .. versionadded:: 3.3
903
904
905.. function:: CMSG_SPACE(length)
906
907   Return the buffer size needed for :meth:`~socket.recvmsg` to
908   receive an ancillary data item with associated data of the given
909   *length*, along with any trailing padding.  The buffer space needed
910   to receive multiple items is the sum of the :func:`CMSG_SPACE`
911   values for their associated data lengths.  Raises
912   :exc:`OverflowError` if *length* is outside the permissible range
913   of values.
914
915   Note that some systems might support ancillary data without
916   providing this function.  Also note that setting the buffer size
917   using the results of this function may not precisely limit the
918   amount of ancillary data that can be received, since additional
919   data may be able to fit into the padding area.
920
921   .. availability:: most Unix platforms, possibly others.
922
923   .. versionadded:: 3.3
924
925
926.. function:: getdefaulttimeout()
927
928   Return the default timeout in seconds (float) for new socket objects. A value
929   of ``None`` indicates that new socket objects have no timeout. When the socket
930   module is first imported, the default is ``None``.
931
932
933.. function:: setdefaulttimeout(timeout)
934
935   Set the default timeout in seconds (float) for new socket objects.  When
936   the socket module is first imported, the default is ``None``.  See
937   :meth:`~socket.settimeout` for possible values and their respective
938   meanings.
939
940
941.. function:: sethostname(name)
942
943   Set the machine's hostname to *name*.  This will raise an
944   :exc:`OSError` if you don't have enough rights.
945
946   .. availability:: Unix.
947
948   .. versionadded:: 3.3
949
950
951.. function:: if_nameindex()
952
953   Return a list of network interface information
954   (index int, name string) tuples.
955   :exc:`OSError` if the system call fails.
956
957   .. availability:: Unix.
958
959   .. versionadded:: 3.3
960
961
962.. function:: if_nametoindex(if_name)
963
964   Return a network interface index number corresponding to an
965   interface name.
966   :exc:`OSError` if no interface with the given name exists.
967
968   .. availability:: Unix.
969
970   .. versionadded:: 3.3
971
972
973.. function:: if_indextoname(if_index)
974
975   Return a network interface name corresponding to an
976   interface index number.
977   :exc:`OSError` if no interface with the given index exists.
978
979   .. availability:: Unix.
980
981   .. versionadded:: 3.3
982
983
984.. _socket-objects:
985
986Socket Objects
987--------------
988
989Socket objects have the following methods.  Except for
990:meth:`~socket.makefile`, these correspond to Unix system calls applicable
991to sockets.
992
993.. versionchanged:: 3.2
994   Support for the :term:`context manager` protocol was added.  Exiting the
995   context manager is equivalent to calling :meth:`~socket.close`.
996
997
998.. method:: socket.accept()
999
1000   Accept a connection. The socket must be bound to an address and listening for
1001   connections. The return value is a pair ``(conn, address)`` where *conn* is a
1002   *new* socket object usable to send and receive data on the connection, and
1003   *address* is the address bound to the socket on the other end of the connection.
1004
1005   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
1006
1007   .. versionchanged:: 3.4
1008      The socket is now non-inheritable.
1009
1010   .. versionchanged:: 3.5
1011      If the system call is interrupted and the signal handler does not raise
1012      an exception, the method now retries the system call instead of raising
1013      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1014
1015
1016.. method:: socket.bind(address)
1017
1018   Bind the socket to *address*.  The socket must not already be bound. (The format
1019   of *address* depends on the address family --- see above.)
1020
1021
1022.. method:: socket.close()
1023
1024   Mark the socket closed.  The underlying system resource (e.g. a file
1025   descriptor) is also closed when all file objects from :meth:`makefile()`
1026   are closed.  Once that happens, all future operations on the socket
1027   object will fail. The remote end will receive no more data (after
1028   queued data is flushed).
1029
1030   Sockets are automatically closed when they are garbage-collected, but
1031   it is recommended to :meth:`close` them explicitly, or to use a
1032   :keyword:`with` statement around them.
1033
1034   .. versionchanged:: 3.6
1035      :exc:`OSError` is now raised if an error occurs when the underlying
1036      :c:func:`close` call is made.
1037
1038   .. note::
1039
1040      :meth:`close()` releases the resource associated with a connection but
1041      does not necessarily close the connection immediately.  If you want
1042      to close the connection in a timely fashion, call :meth:`shutdown()`
1043      before :meth:`close()`.
1044
1045
1046.. method:: socket.connect(address)
1047
1048   Connect to a remote socket at *address*. (The format of *address* depends on the
1049   address family --- see above.)
1050
1051   If the connection is interrupted by a signal, the method waits until the
1052   connection completes, or raise a :exc:`socket.timeout` on timeout, if the
1053   signal handler doesn't raise an exception and the socket is blocking or has
1054   a timeout. For non-blocking sockets, the method raises an
1055   :exc:`InterruptedError` exception if the connection is interrupted by a
1056   signal (or the exception raised by the signal handler).
1057
1058   .. versionchanged:: 3.5
1059      The method now waits until the connection completes instead of raising an
1060      :exc:`InterruptedError` exception if the connection is interrupted by a
1061      signal, the signal handler doesn't raise an exception and the socket is
1062      blocking or has a timeout (see the :pep:`475` for the rationale).
1063
1064
1065.. method:: socket.connect_ex(address)
1066
1067   Like ``connect(address)``, but return an error indicator instead of raising an
1068   exception for errors returned by the C-level :c:func:`connect` call (other
1069   problems, such as "host not found," can still raise exceptions).  The error
1070   indicator is ``0`` if the operation succeeded, otherwise the value of the
1071   :c:data:`errno` variable.  This is useful to support, for example, asynchronous
1072   connects.
1073
1074
1075.. method:: socket.detach()
1076
1077   Put the socket object into closed state without actually closing the
1078   underlying file descriptor.  The file descriptor is returned, and can
1079   be reused for other purposes.
1080
1081   .. versionadded:: 3.2
1082
1083
1084.. method:: socket.dup()
1085
1086   Duplicate the socket.
1087
1088   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
1089
1090   .. versionchanged:: 3.4
1091      The socket is now non-inheritable.
1092
1093
1094.. method:: socket.fileno()
1095
1096   Return the socket's file descriptor (a small integer), or -1 on failure. This
1097   is useful with :func:`select.select`.
1098
1099   Under Windows the small integer returned by this method cannot be used where a
1100   file descriptor can be used (such as :func:`os.fdopen`).  Unix does not have
1101   this limitation.
1102
1103.. method:: socket.get_inheritable()
1104
1105   Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1106   descriptor or socket's handle: ``True`` if the socket can be inherited in
1107   child processes, ``False`` if it cannot.
1108
1109   .. versionadded:: 3.4
1110
1111
1112.. method:: socket.getpeername()
1113
1114   Return the remote address to which the socket is connected.  This is useful to
1115   find out the port number of a remote IPv4/v6 socket, for instance. (The format
1116   of the address returned depends on the address family --- see above.)  On some
1117   systems this function is not supported.
1118
1119
1120.. method:: socket.getsockname()
1121
1122   Return the socket's own address.  This is useful to find out the port number of
1123   an IPv4/v6 socket, for instance. (The format of the address returned depends on
1124   the address family --- see above.)
1125
1126
1127.. method:: socket.getsockopt(level, optname[, buflen])
1128
1129   Return the value of the given socket option (see the Unix man page
1130   :manpage:`getsockopt(2)`).  The needed symbolic constants (:const:`SO_\*` etc.)
1131   are defined in this module.  If *buflen* is absent, an integer option is assumed
1132   and its integer value is returned by the function.  If *buflen* is present, it
1133   specifies the maximum length of the buffer used to receive the option in, and
1134   this buffer is returned as a bytes object.  It is up to the caller to decode the
1135   contents of the buffer (see the optional built-in module :mod:`struct` for a way
1136   to decode C structures encoded as byte strings).
1137
1138
1139.. method:: socket.getblocking()
1140
1141   Return ``True`` if socket is in blocking mode, ``False`` if in
1142   non-blocking.
1143
1144   This is equivalent to checking ``socket.gettimeout() == 0``.
1145
1146   .. versionadded:: 3.7
1147
1148
1149.. method:: socket.gettimeout()
1150
1151   Return the timeout in seconds (float) associated with socket operations,
1152   or ``None`` if no timeout is set.  This reflects the last call to
1153   :meth:`setblocking` or :meth:`settimeout`.
1154
1155
1156.. method:: socket.ioctl(control, option)
1157
1158   :platform: Windows
1159
1160   The :meth:`ioctl` method is a limited interface to the WSAIoctl system
1161   interface.  Please refer to the `Win32 documentation
1162   <https://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
1163   information.
1164
1165   On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
1166   functions may be used; they accept a socket object as their first argument.
1167
1168   Currently only the following control codes are supported:
1169   ``SIO_RCVALL``, ``SIO_KEEPALIVE_VALS``, and ``SIO_LOOPBACK_FAST_PATH``.
1170
1171   .. versionchanged:: 3.6
1172      ``SIO_LOOPBACK_FAST_PATH`` was added.
1173
1174.. method:: socket.listen([backlog])
1175
1176   Enable a server to accept connections.  If *backlog* is specified, it must
1177   be at least 0 (if it is lower, it is set to 0); it specifies the number of
1178   unaccepted connections that the system will allow before refusing new
1179   connections. If not specified, a default reasonable value is chosen.
1180
1181   .. versionchanged:: 3.5
1182      The *backlog* parameter is now optional.
1183
1184.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
1185                            errors=None, newline=None)
1186
1187   .. index:: single: I/O control; buffering
1188
1189   Return a :term:`file object` associated with the socket.  The exact returned
1190   type depends on the arguments given to :meth:`makefile`.  These arguments are
1191   interpreted the same way as by the built-in :func:`open` function, except
1192   the only supported *mode* values are ``'r'`` (default), ``'w'`` and ``'b'``.
1193
1194   The socket must be in blocking mode; it can have a timeout, but the file
1195   object's internal buffer may end up in an inconsistent state if a timeout
1196   occurs.
1197
1198   Closing the file object returned by :meth:`makefile` won't close the
1199   original socket unless all other file objects have been closed and
1200   :meth:`socket.close` has been called on the socket object.
1201
1202   .. note::
1203
1204      On Windows, the file-like object created by :meth:`makefile` cannot be
1205      used where a file object with a file descriptor is expected, such as the
1206      stream arguments of :meth:`subprocess.Popen`.
1207
1208
1209.. method:: socket.recv(bufsize[, flags])
1210
1211   Receive data from the socket.  The return value is a bytes object representing the
1212   data received.  The maximum amount of data to be received at once is specified
1213   by *bufsize*.  See the Unix manual page :manpage:`recv(2)` for the meaning of
1214   the optional argument *flags*; it defaults to zero.
1215
1216   .. note::
1217
1218      For best match with hardware and network realities, the value of  *bufsize*
1219      should be a relatively small power of 2, for example, 4096.
1220
1221   .. versionchanged:: 3.5
1222      If the system call is interrupted and the signal handler does not raise
1223      an exception, the method now retries the system call instead of raising
1224      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1225
1226
1227.. method:: socket.recvfrom(bufsize[, flags])
1228
1229   Receive data from the socket.  The return value is a pair ``(bytes, address)``
1230   where *bytes* is a bytes object representing the data received and *address* is the
1231   address of the socket sending the data.  See the Unix manual page
1232   :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
1233   to zero. (The format of *address* depends on the address family --- see above.)
1234
1235   .. versionchanged:: 3.5
1236      If the system call is interrupted and the signal handler does not raise
1237      an exception, the method now retries the system call instead of raising
1238      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1239
1240   .. versionchanged:: 3.7
1241      For multicast IPv6 address, first item of *address* does not contain
1242      ``%scope`` part anymore. In order to get full IPv6 address use
1243      :func:`getnameinfo`.
1244
1245.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
1246
1247   Receive normal data (up to *bufsize* bytes) and ancillary data from
1248   the socket.  The *ancbufsize* argument sets the size in bytes of
1249   the internal buffer used to receive the ancillary data; it defaults
1250   to 0, meaning that no ancillary data will be received.  Appropriate
1251   buffer sizes for ancillary data can be calculated using
1252   :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
1253   into the buffer might be truncated or discarded.  The *flags*
1254   argument defaults to 0 and has the same meaning as for
1255   :meth:`recv`.
1256
1257   The return value is a 4-tuple: ``(data, ancdata, msg_flags,
1258   address)``.  The *data* item is a :class:`bytes` object holding the
1259   non-ancillary data received.  The *ancdata* item is a list of zero
1260   or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
1261   the ancillary data (control messages) received: *cmsg_level* and
1262   *cmsg_type* are integers specifying the protocol level and
1263   protocol-specific type respectively, and *cmsg_data* is a
1264   :class:`bytes` object holding the associated data.  The *msg_flags*
1265   item is the bitwise OR of various flags indicating conditions on
1266   the received message; see your system documentation for details.
1267   If the receiving socket is unconnected, *address* is the address of
1268   the sending socket, if available; otherwise, its value is
1269   unspecified.
1270
1271   On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
1272   pass file descriptors between processes over an :const:`AF_UNIX`
1273   socket.  When this facility is used (it is often restricted to
1274   :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
1275   ancillary data, items of the form ``(socket.SOL_SOCKET,
1276   socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
1277   representing the new file descriptors as a binary array of the
1278   native C :c:type:`int` type.  If :meth:`recvmsg` raises an
1279   exception after the system call returns, it will first attempt to
1280   close any file descriptors received via this mechanism.
1281
1282   Some systems do not indicate the truncated length of ancillary data
1283   items which have been only partially received.  If an item appears
1284   to extend beyond the end of the buffer, :meth:`recvmsg` will issue
1285   a :exc:`RuntimeWarning`, and will return the part of it which is
1286   inside the buffer provided it has not been truncated before the
1287   start of its associated data.
1288
1289   On systems which support the :const:`SCM_RIGHTS` mechanism, the
1290   following function will receive up to *maxfds* file descriptors,
1291   returning the message data and a list containing the descriptors
1292   (while ignoring unexpected conditions such as unrelated control
1293   messages being received).  See also :meth:`sendmsg`. ::
1294
1295      import socket, array
1296
1297      def recv_fds(sock, msglen, maxfds):
1298          fds = array.array("i")   # Array of ints
1299          msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1300          for cmsg_level, cmsg_type, cmsg_data in ancdata:
1301              if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
1302                  # Append data, ignoring any truncated integers at the end.
1303                  fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
1304          return msg, list(fds)
1305
1306   .. availability:: most Unix platforms, possibly others.
1307
1308   .. versionadded:: 3.3
1309
1310   .. versionchanged:: 3.5
1311      If the system call is interrupted and the signal handler does not raise
1312      an exception, the method now retries the system call instead of raising
1313      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1314
1315
1316.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1317
1318   Receive normal data and ancillary data from the socket, behaving as
1319   :meth:`recvmsg` would, but scatter the non-ancillary data into a
1320   series of buffers instead of returning a new bytes object.  The
1321   *buffers* argument must be an iterable of objects that export
1322   writable buffers (e.g. :class:`bytearray` objects); these will be
1323   filled with successive chunks of the non-ancillary data until it
1324   has all been written or there are no more buffers.  The operating
1325   system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1326   on the number of buffers that can be used.  The *ancbufsize* and
1327   *flags* arguments have the same meaning as for :meth:`recvmsg`.
1328
1329   The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1330   address)``, where *nbytes* is the total number of bytes of
1331   non-ancillary data written into the buffers, and *ancdata*,
1332   *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1333
1334   Example::
1335
1336      >>> import socket
1337      >>> s1, s2 = socket.socketpair()
1338      >>> b1 = bytearray(b'----')
1339      >>> b2 = bytearray(b'0123456789')
1340      >>> b3 = bytearray(b'--------------')
1341      >>> s1.send(b'Mary had a little lamb')
1342      22
1343      >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1344      (22, [], 0, None)
1345      >>> [b1, b2, b3]
1346      [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1347
1348   .. availability:: most Unix platforms, possibly others.
1349
1350   .. versionadded:: 3.3
1351
1352
1353.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1354
1355   Receive data from the socket, writing it into *buffer* instead of creating a
1356   new bytestring.  The return value is a pair ``(nbytes, address)`` where *nbytes* is
1357   the number of bytes received and *address* is the address of the socket sending
1358   the data.  See the Unix manual page :manpage:`recv(2)` for the meaning of the
1359   optional argument *flags*; it defaults to zero.  (The format of *address*
1360   depends on the address family --- see above.)
1361
1362
1363.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1364
1365   Receive up to *nbytes* bytes from the socket, storing the data into a buffer
1366   rather than creating a new bytestring.  If *nbytes* is not specified (or 0),
1367   receive up to the size available in the given buffer.  Returns the number of
1368   bytes received.  See the Unix manual page :manpage:`recv(2)` for the meaning
1369   of the optional argument *flags*; it defaults to zero.
1370
1371
1372.. method:: socket.send(bytes[, flags])
1373
1374   Send data to the socket.  The socket must be connected to a remote socket.  The
1375   optional *flags* argument has the same meaning as for :meth:`recv` above.
1376   Returns the number of bytes sent. Applications are responsible for checking that
1377   all data has been sent; if only some of the data was transmitted, the
1378   application needs to attempt delivery of the remaining data. For further
1379   information on this topic, consult the :ref:`socket-howto`.
1380
1381   .. versionchanged:: 3.5
1382      If the system call is interrupted and the signal handler does not raise
1383      an exception, the method now retries the system call instead of raising
1384      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1385
1386
1387.. method:: socket.sendall(bytes[, flags])
1388
1389   Send data to the socket.  The socket must be connected to a remote socket.  The
1390   optional *flags* argument has the same meaning as for :meth:`recv` above.
1391   Unlike :meth:`send`, this method continues to send data from *bytes* until
1392   either all data has been sent or an error occurs.  ``None`` is returned on
1393   success.  On error, an exception is raised, and there is no way to determine how
1394   much data, if any, was successfully sent.
1395
1396   .. versionchanged:: 3.5
1397      The socket timeout is no more reset each time data is sent successfully.
1398      The socket timeout is now the maximum total duration to send all data.
1399
1400   .. versionchanged:: 3.5
1401      If the system call is interrupted and the signal handler does not raise
1402      an exception, the method now retries the system call instead of raising
1403      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1404
1405
1406.. method:: socket.sendto(bytes, address)
1407            socket.sendto(bytes, flags, address)
1408
1409   Send data to the socket.  The socket should not be connected to a remote socket,
1410   since the destination socket is specified by *address*.  The optional *flags*
1411   argument has the same meaning as for :meth:`recv` above.  Return the number of
1412   bytes sent. (The format of *address* depends on the address family --- see
1413   above.)
1414
1415   .. versionchanged:: 3.5
1416      If the system call is interrupted and the signal handler does not raise
1417      an exception, the method now retries the system call instead of raising
1418      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1419
1420
1421.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1422
1423   Send normal and ancillary data to the socket, gathering the
1424   non-ancillary data from a series of buffers and concatenating it
1425   into a single message.  The *buffers* argument specifies the
1426   non-ancillary data as an iterable of
1427   :term:`bytes-like objects <bytes-like object>`
1428   (e.g. :class:`bytes` objects); the operating system may set a limit
1429   (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1430   that can be used.  The *ancdata* argument specifies the ancillary
1431   data (control messages) as an iterable of zero or more tuples
1432   ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1433   *cmsg_type* are integers specifying the protocol level and
1434   protocol-specific type respectively, and *cmsg_data* is a
1435   bytes-like object holding the associated data.  Note that
1436   some systems (in particular, systems without :func:`CMSG_SPACE`)
1437   might support sending only one control message per call.  The
1438   *flags* argument defaults to 0 and has the same meaning as for
1439   :meth:`send`.  If *address* is supplied and not ``None``, it sets a
1440   destination address for the message.  The return value is the
1441   number of bytes of non-ancillary data sent.
1442
1443   The following function sends the list of file descriptors *fds*
1444   over an :const:`AF_UNIX` socket, on systems which support the
1445   :const:`SCM_RIGHTS` mechanism.  See also :meth:`recvmsg`. ::
1446
1447      import socket, array
1448
1449      def send_fds(sock, msg, fds):
1450          return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1451
1452   .. availability:: most Unix platforms, possibly others.
1453
1454   .. versionadded:: 3.3
1455
1456   .. versionchanged:: 3.5
1457      If the system call is interrupted and the signal handler does not raise
1458      an exception, the method now retries the system call instead of raising
1459      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1460
1461.. method:: socket.sendmsg_afalg([msg], *, op[, iv[, assoclen[, flags]]])
1462
1463   Specialized version of :meth:`~socket.sendmsg` for :const:`AF_ALG` socket.
1464   Set mode, IV, AEAD associated data length and flags for :const:`AF_ALG` socket.
1465
1466   .. availability:: Linux >= 2.6.38.
1467
1468   .. versionadded:: 3.6
1469
1470.. method:: socket.sendfile(file, offset=0, count=None)
1471
1472   Send a file until EOF is reached by using high-performance
1473   :mod:`os.sendfile` and return the total number of bytes which were sent.
1474   *file* must be a regular file object opened in binary mode. If
1475   :mod:`os.sendfile` is not available (e.g. Windows) or *file* is not a
1476   regular file :meth:`send` will be used instead. *offset* tells from where to
1477   start reading the file. If specified, *count* is the total number of bytes
1478   to transmit as opposed to sending the file until EOF is reached. File
1479   position is updated on return or also in case of error in which case
1480   :meth:`file.tell() <io.IOBase.tell>` can be used to figure out the number of
1481   bytes which were sent. The socket must be of :const:`SOCK_STREAM` type.
1482   Non-blocking sockets are not supported.
1483
1484   .. versionadded:: 3.5
1485
1486.. method:: socket.set_inheritable(inheritable)
1487
1488   Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1489   descriptor or socket's handle.
1490
1491   .. versionadded:: 3.4
1492
1493
1494.. method:: socket.setblocking(flag)
1495
1496   Set blocking or non-blocking mode of the socket: if *flag* is false, the
1497   socket is set to non-blocking, else to blocking mode.
1498
1499   This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1500
1501   * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1502
1503   * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
1504
1505   .. versionchanged:: 3.7
1506      The method no longer applies :const:`SOCK_NONBLOCK` flag on
1507      :attr:`socket.type`.
1508
1509
1510.. method:: socket.settimeout(value)
1511
1512   Set a timeout on blocking socket operations.  The *value* argument can be a
1513   nonnegative floating point number expressing seconds, or ``None``.
1514   If a non-zero value is given, subsequent socket operations will raise a
1515   :exc:`timeout` exception if the timeout period *value* has elapsed before
1516   the operation has completed.  If zero is given, the socket is put in
1517   non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
1518
1519   For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
1520
1521   .. versionchanged:: 3.7
1522      The method no longer toggles :const:`SOCK_NONBLOCK` flag on
1523      :attr:`socket.type`.
1524
1525
1526.. method:: socket.setsockopt(level, optname, value: int)
1527.. method:: socket.setsockopt(level, optname, value: buffer)
1528.. method:: socket.setsockopt(level, optname, None, optlen: int)
1529
1530   .. index:: module: struct
1531
1532   Set the value of the given socket option (see the Unix manual page
1533   :manpage:`setsockopt(2)`).  The needed symbolic constants are defined in the
1534   :mod:`socket` module (:const:`SO_\*` etc.).  The value can be an integer,
1535   ``None`` or a :term:`bytes-like object` representing a buffer. In the later
1536   case it is up to the caller to ensure that the bytestring contains the
1537   proper bits (see the optional built-in module :mod:`struct` for a way to
1538   encode C structures as bytestrings). When value is set to ``None``,
1539   optlen argument is required. It's equivalent to call setsockopt C
1540   function with optval=NULL and optlen=optlen.
1541
1542
1543   .. versionchanged:: 3.5
1544      Writable :term:`bytes-like object` is now accepted.
1545
1546   .. versionchanged:: 3.6
1547      setsockopt(level, optname, None, optlen: int) form added.
1548
1549
1550.. method:: socket.shutdown(how)
1551
1552   Shut down one or both halves of the connection.  If *how* is :const:`SHUT_RD`,
1553   further receives are disallowed.  If *how* is :const:`SHUT_WR`, further sends
1554   are disallowed.  If *how* is :const:`SHUT_RDWR`, further sends and receives are
1555   disallowed.
1556
1557
1558.. method:: socket.share(process_id)
1559
1560   Duplicate a socket and prepare it for sharing with a target process.  The
1561   target process must be provided with *process_id*.  The resulting bytes object
1562   can then be passed to the target process using some form of interprocess
1563   communication and the socket can be recreated there using :func:`fromshare`.
1564   Once this method has been called, it is safe to close the socket since
1565   the operating system has already duplicated it for the target process.
1566
1567   .. availability:: Windows.
1568
1569   .. versionadded:: 3.3
1570
1571
1572Note that there are no methods :meth:`read` or :meth:`write`; use
1573:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
1574
1575Socket objects also have these (read-only) attributes that correspond to the
1576values given to the :class:`~socket.socket` constructor.
1577
1578
1579.. attribute:: socket.family
1580
1581   The socket family.
1582
1583
1584.. attribute:: socket.type
1585
1586   The socket type.
1587
1588
1589.. attribute:: socket.proto
1590
1591   The socket protocol.
1592
1593
1594
1595.. _socket-timeouts:
1596
1597Notes on socket timeouts
1598------------------------
1599
1600A socket object can be in one of three modes: blocking, non-blocking, or
1601timeout.  Sockets are by default always created in blocking mode, but this
1602can be changed by calling :func:`setdefaulttimeout`.
1603
1604* In *blocking mode*, operations block until complete or the system returns
1605  an error (such as connection timed out).
1606
1607* In *non-blocking mode*, operations fail (with an error that is unfortunately
1608  system-dependent) if they cannot be completed immediately: functions from the
1609  :mod:`select` can be used to know when and whether a socket is available for
1610  reading or writing.
1611
1612* In *timeout mode*, operations fail if they cannot be completed within the
1613  timeout specified for the socket (they raise a :exc:`timeout` exception)
1614  or if the system returns an error.
1615
1616.. note::
1617   At the operating system level, sockets in *timeout mode* are internally set
1618   in non-blocking mode.  Also, the blocking and timeout modes are shared between
1619   file descriptors and socket objects that refer to the same network endpoint.
1620   This implementation detail can have visible consequences if e.g. you decide
1621   to use the :meth:`~socket.fileno()` of a socket.
1622
1623Timeouts and the ``connect`` method
1624^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1625
1626The :meth:`~socket.connect` operation is also subject to the timeout
1627setting, and in general it is recommended to call :meth:`~socket.settimeout`
1628before calling :meth:`~socket.connect` or pass a timeout parameter to
1629:meth:`create_connection`.  However, the system network stack may also
1630return a connection timeout error of its own regardless of any Python socket
1631timeout setting.
1632
1633Timeouts and the ``accept`` method
1634^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1635
1636If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1637the :meth:`~socket.accept` method inherit that timeout.  Otherwise, the
1638behaviour depends on settings of the listening socket:
1639
1640* if the listening socket is in *blocking mode* or in *timeout mode*,
1641  the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1642
1643* if the listening socket is in *non-blocking mode*, whether the socket
1644  returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1645  is operating system-dependent.  If you want to ensure cross-platform
1646  behaviour, it is recommended you manually override this setting.
1647
1648
1649.. _socket-example:
1650
1651Example
1652-------
1653
1654Here are four minimal example programs using the TCP/IP protocol: a server that
1655echoes all data that it receives back (servicing only one client), and a client
1656using it.  Note that a server must perform the sequence :func:`.socket`,
1657:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1658repeating the :meth:`~socket.accept` to service more than one client), while a
1659client only needs the sequence :func:`.socket`, :meth:`~socket.connect`.  Also
1660note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1661the socket it is listening on but on the new socket returned by
1662:meth:`~socket.accept`.
1663
1664The first two examples support IPv4 only. ::
1665
1666   # Echo server program
1667   import socket
1668
1669   HOST = ''                 # Symbolic name meaning all available interfaces
1670   PORT = 50007              # Arbitrary non-privileged port
1671   with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1672       s.bind((HOST, PORT))
1673       s.listen(1)
1674       conn, addr = s.accept()
1675       with conn:
1676           print('Connected by', addr)
1677           while True:
1678               data = conn.recv(1024)
1679               if not data: break
1680               conn.sendall(data)
1681
1682::
1683
1684   # Echo client program
1685   import socket
1686
1687   HOST = 'daring.cwi.nl'    # The remote host
1688   PORT = 50007              # The same port as used by the server
1689   with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1690       s.connect((HOST, PORT))
1691       s.sendall(b'Hello, world')
1692       data = s.recv(1024)
1693   print('Received', repr(data))
1694
1695The next two examples are identical to the above two, but support both IPv4 and
1696IPv6. The server side will listen to the first address family available (it
1697should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1698precedence and the server may not accept IPv4 traffic. The client side will try
1699to connect to the all addresses returned as a result of the name resolution, and
1700sends traffic to the first one connected successfully. ::
1701
1702   # Echo server program
1703   import socket
1704   import sys
1705
1706   HOST = None               # Symbolic name meaning all available interfaces
1707   PORT = 50007              # Arbitrary non-privileged port
1708   s = None
1709   for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1710                                 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
1711       af, socktype, proto, canonname, sa = res
1712       try:
1713           s = socket.socket(af, socktype, proto)
1714       except OSError as msg:
1715           s = None
1716           continue
1717       try:
1718           s.bind(sa)
1719           s.listen(1)
1720       except OSError as msg:
1721           s.close()
1722           s = None
1723           continue
1724       break
1725   if s is None:
1726       print('could not open socket')
1727       sys.exit(1)
1728   conn, addr = s.accept()
1729   with conn:
1730       print('Connected by', addr)
1731       while True:
1732           data = conn.recv(1024)
1733           if not data: break
1734           conn.send(data)
1735
1736::
1737
1738   # Echo client program
1739   import socket
1740   import sys
1741
1742   HOST = 'daring.cwi.nl'    # The remote host
1743   PORT = 50007              # The same port as used by the server
1744   s = None
1745   for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1746       af, socktype, proto, canonname, sa = res
1747       try:
1748           s = socket.socket(af, socktype, proto)
1749       except OSError as msg:
1750           s = None
1751           continue
1752       try:
1753           s.connect(sa)
1754       except OSError as msg:
1755           s.close()
1756           s = None
1757           continue
1758       break
1759   if s is None:
1760       print('could not open socket')
1761       sys.exit(1)
1762   with s:
1763       s.sendall(b'Hello, world')
1764       data = s.recv(1024)
1765   print('Received', repr(data))
1766
1767
1768The next example shows how to write a very simple network sniffer with raw
1769sockets on Windows. The example requires administrator privileges to modify
1770the interface::
1771
1772   import socket
1773
1774   # the public network interface
1775   HOST = socket.gethostbyname(socket.gethostname())
1776
1777   # create a raw socket and bind it to the public interface
1778   s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1779   s.bind((HOST, 0))
1780
1781   # Include IP headers
1782   s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
1783
1784   # receive all packages
1785   s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
1786
1787   # receive a package
1788   print(s.recvfrom(65565))
1789
1790   # disabled promiscuous mode
1791   s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
1792
1793The next example shows how to use the socket interface to communicate to a CAN
1794network using the raw socket protocol. To use CAN with the broadcast
1795manager protocol instead, open a socket with::
1796
1797    socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1798
1799After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
1800can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
1801their counterparts) on the socket object as usual.
1802
1803This last example might require special privileges::
1804
1805   import socket
1806   import struct
1807
1808
1809   # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
1810
1811   can_frame_fmt = "=IB3x8s"
1812   can_frame_size = struct.calcsize(can_frame_fmt)
1813
1814   def build_can_frame(can_id, data):
1815       can_dlc = len(data)
1816       data = data.ljust(8, b'\x00')
1817       return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1818
1819   def dissect_can_frame(frame):
1820       can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1821       return (can_id, can_dlc, data[:can_dlc])
1822
1823
1824   # create a raw socket and bind it to the 'vcan0' interface
1825   s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1826   s.bind(('vcan0',))
1827
1828   while True:
1829       cf, addr = s.recvfrom(can_frame_size)
1830
1831       print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1832
1833       try:
1834           s.send(cf)
1835       except OSError:
1836           print('Error sending CAN frame')
1837
1838       try:
1839           s.send(build_can_frame(0x01, b'\x01\x02\x03'))
1840       except OSError:
1841           print('Error sending CAN frame')
1842
1843Running an example several times with too small delay between executions, could
1844lead to this error::
1845
1846   OSError: [Errno 98] Address already in use
1847
1848This is because the previous execution has left the socket in a ``TIME_WAIT``
1849state, and can't be immediately reused.
1850
1851There is a :mod:`socket` flag to set, in order to prevent this,
1852:data:`socket.SO_REUSEADDR`::
1853
1854   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1855   s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1856   s.bind((HOST, PORT))
1857
1858the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1859``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1860
1861
1862.. seealso::
1863
1864   For an introduction to socket programming (in C), see the following papers:
1865
1866   - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1867
1868   - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J.  Leffler et
1869     al,
1870
1871   both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1872   PS1:7 and PS1:8).  The platform-specific reference material for the various
1873   socket-related system calls are also a valuable source of information on the
1874   details of socket semantics.  For Unix, refer to the manual pages; for Windows,
1875   see the WinSock (or Winsock 2) specification.  For IPv6-ready APIs, readers may
1876   want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.
1877