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 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 
    196 If you use a hostname in the *host* portion of IPv4/v6 socket address, the
    197 program may show a nondeterministic behavior, as Python uses the first address
    198 returned from the DNS resolution.  The socket address will be resolved
    199 differently into an actual IPv4/v6 address, depending on the results from DNS
    200 resolution and/or the host configuration.  For deterministic behavior use a
    201 numeric address in *host* portion.
    202 
    203 All errors raise exceptions.  The normal exceptions for invalid argument types
    204 and out-of-memory conditions can be raised; starting from Python 3.3, errors
    205 related to socket or address semantics raise :exc:`OSError` or one of its
    206 subclasses (they used to raise :exc:`socket.error`).
    207 
    208 Non-blocking mode is supported through :meth:`~socket.setblocking`.  A
    209 generalization of this based on timeouts is supported through
    210 :meth:`~socket.settimeout`.
    211 
    212 
    213 Module contents
    214 ---------------
    215 
    216 The module :mod:`socket` exports the following elements.
    217 
    218 
    219 Exceptions
    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 
    268 Constants
    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 
    484 Functions
    485 ^^^^^^^^^
    486 
    487 Creating sockets
    488 ''''''''''''''''
    489 
    490 The 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 
    618 Other functions
    619 '''''''''''''''
    620 
    621 The :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 
    986 Socket Objects
    987 --------------
    988 
    989 Socket objects have the following methods.  Except for
    990 :meth:`~socket.makefile`, these correspond to Unix system calls applicable
    991 to 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 
   1572 Note that there are no methods :meth:`read` or :meth:`write`; use
   1573 :meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
   1574 
   1575 Socket objects also have these (read-only) attributes that correspond to the
   1576 values 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 
   1597 Notes on socket timeouts
   1598 ------------------------
   1599 
   1600 A socket object can be in one of three modes: blocking, non-blocking, or
   1601 timeout.  Sockets are by default always created in blocking mode, but this
   1602 can 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 
   1623 Timeouts and the ``connect`` method
   1624 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   1625 
   1626 The :meth:`~socket.connect` operation is also subject to the timeout
   1627 setting, and in general it is recommended to call :meth:`~socket.settimeout`
   1628 before calling :meth:`~socket.connect` or pass a timeout parameter to
   1629 :meth:`create_connection`.  However, the system network stack may also
   1630 return a connection timeout error of its own regardless of any Python socket
   1631 timeout setting.
   1632 
   1633 Timeouts and the ``accept`` method
   1634 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   1635 
   1636 If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
   1637 the :meth:`~socket.accept` method inherit that timeout.  Otherwise, the
   1638 behaviour 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 
   1651 Example
   1652 -------
   1653 
   1654 Here are four minimal example programs using the TCP/IP protocol: a server that
   1655 echoes all data that it receives back (servicing only one client), and a client
   1656 using it.  Note that a server must perform the sequence :func:`.socket`,
   1657 :meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
   1658 repeating the :meth:`~socket.accept` to service more than one client), while a
   1659 client only needs the sequence :func:`.socket`, :meth:`~socket.connect`.  Also
   1660 note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
   1661 the socket it is listening on but on the new socket returned by
   1662 :meth:`~socket.accept`.
   1663 
   1664 The 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 
   1695 The next two examples are identical to the above two, but support both IPv4 and
   1696 IPv6. The server side will listen to the first address family available (it
   1697 should listen to both instead). On most of IPv6-ready systems, IPv6 will take
   1698 precedence and the server may not accept IPv4 traffic. The client side will try
   1699 to connect to the all addresses returned as a result of the name resolution, and
   1700 sends 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 
   1768 The next example shows how to write a very simple network sniffer with raw
   1769 sockets on Windows. The example requires administrator privileges to modify
   1770 the 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 
   1793 The next example shows how to use the socket interface to communicate to a CAN
   1794 network using the raw socket protocol. To use CAN with the broadcast
   1795 manager protocol instead, open a socket with::
   1796 
   1797     socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
   1798 
   1799 After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
   1800 can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
   1801 their counterparts) on the socket object as usual.
   1802 
   1803 This 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 
   1843 Running an example several times with too small delay between executions, could
   1844 lead to this error::
   1845 
   1846    OSError: [Errno 98] Address already in use
   1847 
   1848 This is because the previous execution has left the socket in a ``TIME_WAIT``
   1849 state, and can't be immediately reused.
   1850 
   1851 There 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 
   1858 the :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