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