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 
      8 This module provides access to the BSD *socket* interface. It is available on
      9 all modern Unix systems, Windows, Mac OS X, BeOS, OS/2, and probably additional
     10 platforms.
     11 
     12 .. note::
     13 
     14    Some behavior may be platform dependent, since calls are made to the operating
     15    system socket APIs.
     16 
     17 For an introduction to socket programming (in C), see the following papers: An
     18 Introductory 4.3BSD Interprocess Communication Tutorial, by Stuart Sechrest and
     19 An Advanced 4.3BSD Interprocess Communication Tutorial, by Samuel J.  Leffler et
     20 al, both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
     21 PS1:7 and PS1:8).  The platform-specific reference material for the various
     22 socket-related system calls are also a valuable source of information on the
     23 details of socket semantics.  For Unix, refer to the manual pages; for Windows,
     24 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
     25 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.
     26 
     27 .. index:: object: socket
     28 
     29 The Python interface is a straightforward transliteration of the Unix system
     30 call and library interface for sockets to Python's object-oriented style: the
     31 :func:`.socket` function returns a :dfn:`socket object` whose methods implement
     32 the various socket system calls.  Parameter types are somewhat higher-level than
     33 in the C interface: as with :meth:`read` and :meth:`write` operations on Python
     34 files, buffer allocation on receive operations is automatic, and buffer length
     35 is implicit on send operations.
     36 
     37 .. _host_port:
     38 
     39 Socket addresses are represented as follows: A single string is used for the
     40 :const:`AF_UNIX` address family. A pair ``(host, port)`` is used for the
     41 :const:`AF_INET` address family, where *host* is a string representing either a
     42 hostname in Internet domain notation like ``'daring.cwi.nl'`` or an IPv4 address
     43 like ``'100.50.200.5'``, and *port* is an integer. For
     44 :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
     45 scopeid)`` is used, where *flowinfo* and *scopeid* represents ``sin6_flowinfo``
     46 and ``sin6_scope_id`` member in :const:`struct sockaddr_in6` in C. For
     47 :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for
     48 backward compatibility. Note, however, omission of *scopeid* can cause problems
     49 in manipulating scoped IPv6 addresses. Other address families are currently not
     50 supported. The address format required by a particular socket object is
     51 automatically selected based on the address family specified when the socket
     52 object was created.
     53 
     54 For IPv4 addresses, two special forms are accepted instead of a host address:
     55 the empty string represents :const:`INADDR_ANY`, and the string
     56 ``'<broadcast>'`` represents :const:`INADDR_BROADCAST`. The behavior is not
     57 available for IPv6 for backward compatibility, therefore, you may want to avoid
     58 these if you intend to support IPv6 with your Python programs.
     59 
     60 If you use a hostname in the *host* portion of IPv4/v6 socket address, the
     61 program may show a nondeterministic behavior, as Python uses the first address
     62 returned from the DNS resolution.  The socket address will be resolved
     63 differently into an actual IPv4/v6 address, depending on the results from DNS
     64 resolution and/or the host configuration.  For deterministic behavior use a
     65 numeric address in *host* portion.
     66 
     67 .. versionadded:: 2.5
     68    AF_NETLINK sockets are represented as  pairs ``pid, groups``.
     69 
     70 .. versionadded:: 2.6
     71    Linux-only support for TIPC is also available using the :const:`AF_TIPC`
     72    address family. TIPC is an open, non-IP based networked protocol designed
     73    for use in clustered computer environments.  Addresses are represented by a
     74    tuple, and the fields depend on the address type. The general tuple form is
     75    ``(addr_type, v1, v2, v3 [, scope])``, where:
     76 
     77    - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`,
     78      or :const:`TIPC_ADDR_ID`.
     79    - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`,
     80      and :const:`TIPC_NODE_SCOPE`.
     81    - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is
     82      the port identifier, and *v3* should be 0.
     83 
     84      If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2*
     85      is the lower port number, and *v3* is the upper port number.
     86 
     87      If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
     88      reference, and *v3* should be set to 0.
     89 
     90 
     91 All errors raise exceptions.  The normal exceptions for invalid argument types
     92 and out-of-memory conditions can be raised; errors related to socket or address
     93 semantics raise the error :exc:`socket.error`.
     94 
     95 Non-blocking mode is supported through :meth:`~socket.setblocking`.  A
     96 generalization of this based on timeouts is supported through
     97 :meth:`~socket.settimeout`.
     98 
     99 The module :mod:`socket` exports the following constants and functions:
    100 
    101 
    102 .. exception:: error
    103 
    104    .. index:: module: errno
    105 
    106    This exception is raised for socket-related errors. The accompanying value is
    107    either a string telling what went wrong or a pair ``(errno, string)``
    108    representing an error returned by a system call, similar to the value
    109    accompanying :exc:`os.error`. See the module :mod:`errno`, which contains names
    110    for the error codes defined by the underlying operating system.
    111 
    112    .. versionchanged:: 2.6
    113       :exc:`socket.error` is now a child class of :exc:`IOError`.
    114 
    115 
    116 .. exception:: herror
    117 
    118    This exception is raised for address-related errors, i.e. for functions that use
    119    *h_errno* in the C API, including :func:`gethostbyname_ex` and
    120    :func:`gethostbyaddr`.
    121 
    122    The accompanying value is a pair ``(h_errno, string)`` representing an error
    123    returned by a library call. *string* represents the description of *h_errno*, as
    124    returned by the :c:func:`hstrerror` C function.
    125 
    126 
    127 .. exception:: gaierror
    128 
    129    This exception is raised for address-related errors, for :func:`getaddrinfo` and
    130    :func:`getnameinfo`. The accompanying value is a pair ``(error, string)``
    131    representing an error returned by a library call. *string* represents the
    132    description of *error*, as returned by the :c:func:`gai_strerror` C function. The
    133    *error* value will match one of the :const:`EAI_\*` constants defined in this
    134    module.
    135 
    136 
    137 .. exception:: timeout
    138 
    139    This exception is raised when a timeout occurs on a socket which has had
    140    timeouts enabled via a prior call to :meth:`settimeout`.  The accompanying value
    141    is a string whose value is currently always "timed out".
    142 
    143    .. versionadded:: 2.3
    144 
    145 
    146 .. data:: AF_UNIX
    147           AF_INET
    148           AF_INET6
    149 
    150    These constants represent the address (and protocol) families, used for the
    151    first argument to :func:`.socket`.  If the :const:`AF_UNIX` constant is not
    152    defined then this protocol is unsupported.
    153 
    154 
    155 .. data:: SOCK_STREAM
    156           SOCK_DGRAM
    157           SOCK_RAW
    158           SOCK_RDM
    159           SOCK_SEQPACKET
    160 
    161    These constants represent the socket types, used for the second argument to
    162    :func:`socket`. (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be
    163    generally useful.)
    164 
    165 
    166 .. data:: SO_*
    167           SOMAXCONN
    168           MSG_*
    169           SOL_*
    170           IPPROTO_*
    171           IPPORT_*
    172           INADDR_*
    173           IP_*
    174           IPV6_*
    175           EAI_*
    176           AI_*
    177           NI_*
    178           TCP_*
    179 
    180    Many constants of these forms, documented in the Unix documentation on sockets
    181    and/or the IP protocol, are also defined in the socket module. They are
    182    generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
    183    methods of socket objects.  In most cases, only those symbols that are defined
    184    in the Unix header files are defined; for a few symbols, default values are
    185    provided.
    186 
    187 .. data:: SIO_*
    188           RCVALL_*
    189 
    190    Constants for Windows' WSAIoctl(). The constants are used as arguments to the
    191    :meth:`~socket.socket.ioctl` method of socket objects.
    192 
    193    .. versionadded:: 2.6
    194 
    195 .. data:: TIPC_*
    196 
    197    TIPC related constants, matching the ones exported by the C socket API. See
    198    the TIPC documentation for more information.
    199 
    200    .. versionadded:: 2.6
    201 
    202 .. data:: has_ipv6
    203 
    204    This constant contains a boolean value which indicates if IPv6 is supported on
    205    this platform.
    206 
    207    .. versionadded:: 2.3
    208 
    209 
    210 .. function:: create_connection(address[, timeout[, source_address]])
    211 
    212    Connect to a TCP service listening on the Internet *address* (a 2-tuple
    213    ``(host, port)``), and return the socket object.  This is a higher-level
    214    function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
    215    it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
    216    and then try to connect to all possible addresses in turn until a
    217    connection succeeds.  This makes it easy to write clients that are
    218    compatible to both IPv4 and IPv6.
    219 
    220    Passing the optional *timeout* parameter will set the timeout on the
    221    socket instance before attempting to connect.  If no *timeout* is
    222    supplied, the global default timeout setting returned by
    223    :func:`getdefaulttimeout` is used.
    224 
    225    If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
    226    socket to bind to as its source address before connecting.  If host or port
    227    are '' or 0 respectively the OS default behavior will be used.
    228 
    229    .. versionadded:: 2.6
    230 
    231    .. versionchanged:: 2.7
    232       *source_address* was added.
    233 
    234 
    235 .. function:: getaddrinfo(host, port[, family[, socktype[, proto[, flags]]]])
    236 
    237    Translate the *host*/*port* argument into a sequence of 5-tuples that contain
    238    all the necessary arguments for creating a socket connected to that service.
    239    *host* is a domain name, a string representation of an IPv4/v6 address
    240    or ``None``. *port* is a string service name such as ``'http'``, a numeric
    241    port number or ``None``.  By passing ``None`` as the value of *host*
    242    and *port*, you can pass ``NULL`` to the underlying C API.
    243 
    244    The *family*, *socktype* and *proto* arguments can be optionally specified
    245    in order to narrow the list of addresses returned.  By default, their value
    246    is ``0``, meaning that the full range of results is selected.
    247    The *flags* argument can be one or several of the ``AI_*`` constants,
    248    and will influence how results are computed and returned.  Its default value
    249    is ``0``.  For example, :const:`AI_NUMERICHOST` will disable domain name
    250    resolution and will raise an error if *host* is a domain name.
    251 
    252    The function returns a list of 5-tuples with the following structure:
    253 
    254    ``(family, socktype, proto, canonname, sockaddr)``
    255 
    256    In these tuples, *family*, *socktype*, *proto* are all integers and are
    257    meant to be passed to the :func:`.socket` function.  *canonname* will be
    258    a string representing the canonical name of the *host* if
    259    :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
    260    will be empty.  *sockaddr* is a tuple describing a socket address, whose
    261    format depends on the returned *family* (a ``(address, port)`` 2-tuple for
    262    :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
    263    :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
    264    method.
    265 
    266    The following example fetches address information for a hypothetical TCP
    267    connection to ``example.org`` on port 80 (results may differ on your
    268    system if IPv6 isn't enabled)::
    269 
    270       >>> socket.getaddrinfo("example.org", 80, 0, 0, socket.IPPROTO_TCP)
    271       [(10, 1, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
    272        (2, 1, 6, '', ('93.184.216.34', 80))]
    273 
    274    .. versionadded:: 2.2
    275 
    276 
    277 .. function:: getfqdn([name])
    278 
    279    Return a fully qualified domain name for *name*. If *name* is omitted or empty,
    280    it is interpreted as the local host.  To find the fully qualified name, the
    281    hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
    282    host, if available.  The first name which includes a period is selected.  In
    283    case no fully qualified domain name is available, the hostname as returned by
    284    :func:`gethostname` is returned.
    285 
    286    .. versionadded:: 2.0
    287 
    288 
    289 .. function:: gethostbyname(hostname)
    290 
    291    Translate a host name to IPv4 address format.  The IPv4 address is returned as a
    292    string, such as  ``'100.50.200.5'``.  If the host name is an IPv4 address itself
    293    it is returned unchanged.  See :func:`gethostbyname_ex` for a more complete
    294    interface. :func:`gethostbyname` does not support IPv6 name resolution, and
    295    :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
    296 
    297 
    298 .. function:: gethostbyname_ex(hostname)
    299 
    300    Translate a host name to IPv4 address format, extended interface. Return a
    301    triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
    302    host name responding to the given *ip_address*, *aliaslist* is a (possibly
    303    empty) list of alternative host names for the same address, and *ipaddrlist* is
    304    a list of IPv4 addresses for the same interface on the same host (often but not
    305    always a single address). :func:`gethostbyname_ex` does not support IPv6 name
    306    resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
    307    stack support.
    308 
    309 
    310 .. function:: gethostname()
    311 
    312    Return a string containing the hostname of the machine where  the Python
    313    interpreter is currently executing.
    314 
    315    If you want to know the current machine's IP address, you may want to use
    316    ``gethostbyname(gethostname())``. This operation assumes that there is a
    317    valid address-to-host mapping for the host, and the assumption does not
    318    always hold.
    319 
    320    Note: :func:`gethostname` doesn't always return the fully qualified domain
    321    name; use ``getfqdn()`` (see above).
    322 
    323 
    324 .. function:: gethostbyaddr(ip_address)
    325 
    326    Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
    327    primary host name responding to the given *ip_address*, *aliaslist* is a
    328    (possibly empty) list of alternative host names for the same address, and
    329    *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
    330    host (most likely containing only a single address). To find the fully qualified
    331    domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
    332    both IPv4 and IPv6.
    333 
    334 
    335 .. function:: getnameinfo(sockaddr, flags)
    336 
    337    Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
    338    on the settings of *flags*, the result can contain a fully-qualified domain name
    339    or numeric address representation in *host*.  Similarly, *port* can contain a
    340    string port name or a numeric port number.
    341 
    342    .. versionadded:: 2.2
    343 
    344 
    345 .. function:: getprotobyname(protocolname)
    346 
    347    Translate an Internet protocol name (for example, ``'icmp'``) to a constant
    348    suitable for passing as the (optional) third argument to the :func:`.socket`
    349    function.  This is usually only needed for sockets opened in "raw" mode
    350    (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
    351    automatically if the protocol is omitted or zero.
    352 
    353 
    354 .. function:: getservbyname(servicename[, protocolname])
    355 
    356    Translate an Internet service name and protocol name to a port number for that
    357    service.  The optional protocol name, if given, should be ``'tcp'`` or
    358    ``'udp'``, otherwise any protocol will match.
    359 
    360 
    361 .. function:: getservbyport(port[, protocolname])
    362 
    363    Translate an Internet port number and protocol name to a service name for that
    364    service.  The optional protocol name, if given, should be ``'tcp'`` or
    365    ``'udp'``, otherwise any protocol will match.
    366 
    367 
    368 .. function:: socket([family[, type[, proto]]])
    369 
    370    Create a new socket using the given address family, socket type and protocol
    371    number.  The address family should be :const:`AF_INET` (the default),
    372    :const:`AF_INET6` or :const:`AF_UNIX`.  The socket type should be
    373    :const:`SOCK_STREAM` (the default), :const:`SOCK_DGRAM` or perhaps one of the
    374    other ``SOCK_`` constants.  The protocol number is usually zero and may be
    375    omitted in that case.
    376 
    377 
    378 .. function:: socketpair([family[, type[, proto]]])
    379 
    380    Build a pair of connected socket objects using the given address family, socket
    381    type, and protocol number.  Address family, socket type, and protocol number are
    382    as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
    383    if defined on the platform; otherwise, the default is :const:`AF_INET`.
    384    Availability: Unix.
    385 
    386    .. versionadded:: 2.4
    387 
    388 
    389 .. function:: fromfd(fd, family, type[, proto])
    390 
    391    Duplicate the file descriptor *fd* (an integer as returned by a file object's
    392    :meth:`fileno` method) and build a socket object from the result.  Address
    393    family, socket type and protocol number are as for the :func:`.socket` function
    394    above. The file descriptor should refer to a socket, but this is not checked ---
    395    subsequent operations on the object may fail if the file descriptor is invalid.
    396    This function is rarely needed, but can be used to get or set socket options on
    397    a socket passed to a program as standard input or output (such as a server
    398    started by the Unix inet daemon).  The socket is assumed to be in blocking mode.
    399    Availability: Unix.
    400 
    401 
    402 .. function:: ntohl(x)
    403 
    404    Convert 32-bit positive integers from network to host byte order.  On machines
    405    where the host byte order is the same as network byte order, this is a no-op;
    406    otherwise, it performs a 4-byte swap operation.
    407 
    408 
    409 .. function:: ntohs(x)
    410 
    411    Convert 16-bit positive integers from network to host byte order.  On machines
    412    where the host byte order is the same as network byte order, this is a no-op;
    413    otherwise, it performs a 2-byte swap operation.
    414 
    415 
    416 .. function:: htonl(x)
    417 
    418    Convert 32-bit positive integers from host to network byte order.  On machines
    419    where the host byte order is the same as network byte order, this is a no-op;
    420    otherwise, it performs a 4-byte swap operation.
    421 
    422 
    423 .. function:: htons(x)
    424 
    425    Convert 16-bit positive integers from host to network byte order.  On machines
    426    where the host byte order is the same as network byte order, this is a no-op;
    427    otherwise, it performs a 2-byte swap operation.
    428 
    429 
    430 .. function:: inet_aton(ip_string)
    431 
    432    Convert an IPv4 address from dotted-quad string format (for example,
    433    '123.45.67.89') to 32-bit packed binary format, as a string four characters in
    434    length.  This is useful when conversing with a program that uses the standard C
    435    library and needs objects of type :c:type:`struct in_addr`, which is the C type
    436    for the 32-bit packed binary this function returns.
    437 
    438    :func:`inet_aton` also accepts strings with less than three dots; see the
    439    Unix manual page :manpage:`inet(3)` for details.
    440 
    441    If the IPv4 address string passed to this function is invalid,
    442    :exc:`socket.error` will be raised. Note that exactly what is valid depends on
    443    the underlying C implementation of :c:func:`inet_aton`.
    444 
    445    :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
    446    instead for IPv4/v6 dual stack support.
    447 
    448 
    449 .. function:: inet_ntoa(packed_ip)
    450 
    451    Convert a 32-bit packed IPv4 address (a string four characters in length) to its
    452    standard dotted-quad string representation (for example, '123.45.67.89').  This
    453    is useful when conversing with a program that uses the standard C library and
    454    needs objects of type :c:type:`struct in_addr`, which is the C type for the
    455    32-bit packed binary data this function takes as an argument.
    456 
    457    If the string passed to this function is not exactly 4 bytes in length,
    458    :exc:`socket.error` will be raised. :func:`inet_ntoa` does not support IPv6, and
    459    :func:`inet_ntop` should be used instead for IPv4/v6 dual stack support.
    460 
    461 
    462 .. function:: inet_pton(address_family, ip_string)
    463 
    464    Convert an IP address from its family-specific string format to a packed, binary
    465    format. :func:`inet_pton` is useful when a library or network protocol calls for
    466    an object of type :c:type:`struct in_addr` (similar to :func:`inet_aton`) or
    467    :c:type:`struct in6_addr`.
    468 
    469    Supported values for *address_family* are currently :const:`AF_INET` and
    470    :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
    471    :exc:`socket.error` will be raised. Note that exactly what is valid depends on
    472    both the value of *address_family* and the underlying implementation of
    473    :c:func:`inet_pton`.
    474 
    475    Availability: Unix (maybe not all platforms).
    476 
    477    .. versionadded:: 2.3
    478 
    479 
    480 .. function:: inet_ntop(address_family, packed_ip)
    481 
    482    Convert a packed IP address (a string of some number of characters) to its
    483    standard, family-specific string representation (for example, ``'7.10.0.5'`` or
    484    ``'5aef:2b::8'``) :func:`inet_ntop` is useful when a library or network protocol
    485    returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`)
    486    or :c:type:`struct in6_addr`.
    487 
    488    Supported values for *address_family* are currently :const:`AF_INET` and
    489    :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the
    490    specified address family, :exc:`ValueError` will be raised.  A
    491    :exc:`socket.error` is raised for errors from the call to :func:`inet_ntop`.
    492 
    493    Availability: Unix (maybe not all platforms).
    494 
    495    .. versionadded:: 2.3
    496 
    497 
    498 .. function:: getdefaulttimeout()
    499 
    500    Return the default timeout in seconds (float) for new socket objects. A value
    501    of ``None`` indicates that new socket objects have no timeout. When the socket
    502    module is first imported, the default is ``None``.
    503 
    504    .. versionadded:: 2.3
    505 
    506 
    507 .. function:: setdefaulttimeout(timeout)
    508 
    509    Set the default timeout in seconds (float) for new socket objects. A value of
    510    ``None`` indicates that new socket objects have no timeout. When the socket
    511    module is first imported, the default is ``None``.
    512 
    513    .. versionadded:: 2.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 .. seealso::
    523 
    524    Module :mod:`SocketServer`
    525       Classes that simplify writing network servers.
    526 
    527    Module :mod:`ssl`
    528       A TLS/SSL wrapper for socket objects.
    529 
    530 
    531 .. _socket-objects:
    532 
    533 Socket Objects
    534 --------------
    535 
    536 Socket objects have the following methods.  Except for :meth:`makefile` these
    537 correspond to Unix system calls applicable to sockets.
    538 
    539 
    540 .. method:: socket.accept()
    541 
    542    Accept a connection. The socket must be bound to an address and listening for
    543    connections. The return value is a pair ``(conn, address)`` where *conn* is a
    544    *new* socket object usable to send and receive data on the connection, and
    545    *address* is the address bound to the socket on the other end of the connection.
    546 
    547 
    548 .. method:: socket.bind(address)
    549 
    550    Bind the socket to *address*.  The socket must not already be bound. (The format
    551    of *address* depends on the address family --- see above.)
    552 
    553    .. note::
    554 
    555       This method has historically accepted a pair of parameters for :const:`AF_INET`
    556       addresses instead of only a tuple.  This was never intentional and is no longer
    557       available in Python 2.0 and later.
    558 
    559 
    560 .. method:: socket.close()
    561 
    562    Close the socket.  All future operations on the socket object will fail. The
    563    remote end will receive no more data (after queued data is flushed). Sockets are
    564    automatically closed when they are garbage-collected.
    565 
    566    .. note::
    567 
    568       :meth:`close()` releases the resource associated with a connection but
    569       does not necessarily close the connection immediately.  If you want
    570       to close the connection in a timely fashion, call :meth:`shutdown()`
    571       before :meth:`close()`.
    572 
    573 
    574 .. method:: socket.connect(address)
    575 
    576    Connect to a remote socket at *address*. (The format of *address* depends on the
    577    address family --- see above.)
    578 
    579    .. note::
    580 
    581       This method has historically accepted a pair of parameters for :const:`AF_INET`
    582       addresses instead of only a tuple.  This was never intentional and is no longer
    583       available in Python 2.0 and later.
    584 
    585 
    586 .. method:: socket.connect_ex(address)
    587 
    588    Like ``connect(address)``, but return an error indicator instead of raising an
    589    exception for errors returned by the C-level :c:func:`connect` call (other
    590    problems, such as "host not found," can still raise exceptions).  The error
    591    indicator is ``0`` if the operation succeeded, otherwise the value of the
    592    :c:data:`errno` variable.  This is useful to support, for example, asynchronous
    593    connects.
    594 
    595    .. note::
    596 
    597       This method has historically accepted a pair of parameters for :const:`AF_INET`
    598       addresses instead of only a tuple. This was never intentional and is no longer
    599       available in Python 2.0 and later.
    600 
    601 
    602 .. method:: socket.fileno()
    603 
    604    Return the socket's file descriptor (a small integer).  This is useful with
    605    :func:`select.select`.
    606 
    607    Under Windows the small integer returned by this method cannot be used where a
    608    file descriptor can be used (such as :func:`os.fdopen`).  Unix does not have
    609    this limitation.
    610 
    611 
    612 .. method:: socket.getpeername()
    613 
    614    Return the remote address to which the socket is connected.  This is useful to
    615    find out the port number of a remote IPv4/v6 socket, for instance. (The format
    616    of the address returned depends on the address family --- see above.)  On some
    617    systems this function is not supported.
    618 
    619 
    620 .. method:: socket.getsockname()
    621 
    622    Return the socket's own address.  This is useful to find out the port number of
    623    an IPv4/v6 socket, for instance. (The format of the address returned depends on
    624    the address family --- see above.)
    625 
    626 
    627 .. method:: socket.getsockopt(level, optname[, buflen])
    628 
    629    Return the value of the given socket option (see the Unix man page
    630    :manpage:`getsockopt(2)`).  The needed symbolic constants (:const:`SO_\*` etc.)
    631    are defined in this module.  If *buflen* is absent, an integer option is assumed
    632    and its integer value is returned by the function.  If *buflen* is present, it
    633    specifies the maximum length of the buffer used to receive the option in, and
    634    this buffer is returned as a string.  It is up to the caller to decode the
    635    contents of the buffer (see the optional built-in module :mod:`struct` for a way
    636    to decode C structures encoded as strings).
    637 
    638 
    639 .. method:: socket.ioctl(control, option)
    640 
    641    :platform: Windows
    642 
    643    The :meth:`ioctl` method is a limited interface to the WSAIoctl system
    644    interface.  Please refer to the `Win32 documentation
    645    <https://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
    646    information.
    647 
    648    On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
    649    functions may be used; they accept a socket object as their first argument.
    650 
    651    .. versionadded:: 2.6
    652 
    653 
    654 .. method:: socket.listen(backlog)
    655 
    656    Listen for connections made to the socket.  The *backlog* argument specifies the
    657    maximum number of queued connections and should be at least 0; the maximum value
    658    is system-dependent (usually 5), the minimum value is forced to 0.
    659 
    660 
    661 .. method:: socket.makefile([mode[, bufsize]])
    662 
    663    .. index:: single: I/O control; buffering
    664 
    665    Return a :dfn:`file object` associated with the socket.  (File objects are
    666    described in :ref:`bltin-file-objects`.) The file object does not close the
    667    socket explicitly when its :meth:`close` method is called, but only removes
    668    its reference to the socket object, so that the socket will be closed if it
    669    is not referenced from anywhere else.
    670 
    671    The socket must be in blocking mode (it can not have a timeout). The optional
    672    *mode* and *bufsize* arguments are interpreted the same way as by the built-in
    673    :func:`file` function.
    674 
    675    .. note::
    676 
    677       On Windows, the file-like object created by :meth:`makefile` cannot be
    678       used where a file object with a file descriptor is expected, such as the
    679       stream arguments of :meth:`subprocess.Popen`.
    680 
    681 
    682 .. method:: socket.recv(bufsize[, flags])
    683 
    684    Receive data from the socket.  The return value is a string representing the
    685    data received.  The maximum amount of data to be received at once is specified
    686    by *bufsize*.  See the Unix manual page :manpage:`recv(2)` for the meaning of
    687    the optional argument *flags*; it defaults to zero.
    688 
    689    .. note::
    690 
    691       For best match with hardware and network realities, the value of  *bufsize*
    692       should be a relatively small power of 2, for example, 4096.
    693 
    694 
    695 .. method:: socket.recvfrom(bufsize[, flags])
    696 
    697    Receive data from the socket.  The return value is a pair ``(string, address)``
    698    where *string* is a string representing the data received and *address* is the
    699    address of the socket sending the data.  See the Unix manual page
    700    :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
    701    to zero. (The format of *address* depends on the address family --- see above.)
    702 
    703 
    704 .. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
    705 
    706    Receive data from the socket, writing it into *buffer* instead of  creating a
    707    new string.  The return value is a pair ``(nbytes, address)`` where *nbytes* is
    708    the number of bytes received and *address* is the address of the socket sending
    709    the data.  See the Unix manual page :manpage:`recv(2)` for the meaning of the
    710    optional argument *flags*; it defaults to zero.  (The format of *address*
    711    depends on the address family --- see above.)
    712 
    713    .. versionadded:: 2.5
    714 
    715 
    716 .. method:: socket.recv_into(buffer[, nbytes[, flags]])
    717 
    718    Receive up to *nbytes* bytes from the socket, storing the data into a buffer
    719    rather than creating a new string.  If *nbytes* is not specified (or 0),
    720    receive up to the size available in the given buffer.  Returns the number of
    721    bytes received.  See the Unix manual page :manpage:`recv(2)` for the meaning
    722    of the optional argument *flags*; it defaults to zero.
    723 
    724    .. versionadded:: 2.5
    725 
    726 
    727 .. method:: socket.send(string[, flags])
    728 
    729    Send data to the socket.  The socket must be connected to a remote socket.  The
    730    optional *flags* argument has the same meaning as for :meth:`recv` above.
    731    Returns the number of bytes sent. Applications are responsible for checking that
    732    all data has been sent; if only some of the data was transmitted, the
    733    application needs to attempt delivery of the remaining data. For further
    734    information on this concept, consult the :ref:`socket-howto`.
    735 
    736 
    737 .. method:: socket.sendall(string[, flags])
    738 
    739    Send data to the socket.  The socket must be connected to a remote socket.  The
    740    optional *flags* argument has the same meaning as for :meth:`recv` above.
    741    Unlike :meth:`send`, this method continues to send data from *string* until
    742    either all data has been sent or an error occurs.  ``None`` is returned on
    743    success.  On error, an exception is raised, and there is no way to determine how
    744    much data, if any, was successfully sent.
    745 
    746 
    747 .. method:: socket.sendto(string, address)
    748             socket.sendto(string, flags, address)
    749 
    750    Send data to the socket.  The socket should not be connected to a remote socket,
    751    since the destination socket is specified by *address*.  The optional *flags*
    752    argument has the same meaning as for :meth:`recv` above.  Return the number of
    753    bytes sent. (The format of *address* depends on the address family --- see
    754    above.)
    755 
    756 
    757 .. method:: socket.setblocking(flag)
    758 
    759    Set blocking or non-blocking mode of the socket: if *flag* is 0, the socket is
    760    set to non-blocking, else to blocking mode.  Initially all sockets are in
    761    blocking mode.  In non-blocking mode, if a :meth:`recv` call doesn't find any
    762    data, or if a :meth:`send` call can't immediately dispose of the data, an
    763    :exc:`error` exception is raised; in blocking mode, the calls block until they
    764    can proceed. ``s.setblocking(0)`` is equivalent to ``s.settimeout(0.0)``;
    765    ``s.setblocking(1)`` is equivalent to ``s.settimeout(None)``.
    766 
    767 
    768 .. method:: socket.settimeout(value)
    769 
    770    Set a timeout on blocking socket operations.  The *value* argument can be a
    771    nonnegative float expressing seconds, or ``None``. If a float is given,
    772    subsequent socket operations will raise a :exc:`timeout` exception if the
    773    timeout period *value* has elapsed before the operation has completed.  Setting
    774    a timeout of ``None`` disables timeouts on socket operations.
    775    ``s.settimeout(0.0)`` is equivalent to ``s.setblocking(0)``;
    776    ``s.settimeout(None)`` is equivalent to ``s.setblocking(1)``.
    777 
    778    .. versionadded:: 2.3
    779 
    780 
    781 .. method:: socket.gettimeout()
    782 
    783    Return the timeout in seconds (float) associated with socket operations, or
    784    ``None`` if no timeout is set.  This reflects the last call to
    785    :meth:`setblocking` or :meth:`settimeout`.
    786 
    787    .. versionadded:: 2.3
    788 
    789 Some notes on socket blocking and timeouts: A socket object can be in one of
    790 three modes: blocking, non-blocking, or timeout.  Sockets are always created in
    791 blocking mode.  In blocking mode, operations block until complete or
    792 the system returns an error (such as connection timed out).  In
    793 non-blocking mode, operations fail (with an error that is unfortunately
    794 system-dependent) if they cannot be completed immediately.  In timeout mode,
    795 operations fail if they cannot be completed within the timeout specified for the
    796 socket or if the system returns an error.  The :meth:`~socket.setblocking`
    797 method is simply a shorthand for certain :meth:`~socket.settimeout` calls.
    798 
    799 Timeout mode internally sets the socket in non-blocking mode.  The blocking and
    800 timeout modes are shared between file descriptors and socket objects that refer
    801 to the same network endpoint.  A consequence of this is that file objects
    802 returned by the :meth:`~socket.makefile` method must only be used when the
    803 socket is in blocking mode; in timeout or non-blocking mode file operations
    804 that cannot be completed immediately will fail.
    805 
    806 Note that the :meth:`~socket.connect` operation is subject to the timeout
    807 setting, and in general it is recommended to call :meth:`~socket.settimeout`
    808 before calling :meth:`~socket.connect` or pass a timeout parameter to
    809 :meth:`create_connection`.  The system network stack may return a connection
    810 timeout error of its own regardless of any Python socket timeout setting.
    811 
    812 
    813 .. method:: socket.setsockopt(level, optname, value)
    814 
    815    .. index:: module: struct
    816 
    817    Set the value of the given socket option (see the Unix manual page
    818    :manpage:`setsockopt(2)`).  The needed symbolic constants are defined in the
    819    :mod:`socket` module (:const:`SO_\*` etc.).  The value can be an integer or a
    820    string representing a buffer.  In the latter case it is up to the caller to
    821    ensure that the string contains the proper bits (see the optional built-in
    822    module :mod:`struct` for a way to encode C structures as strings).
    823 
    824 
    825 .. method:: socket.shutdown(how)
    826 
    827    Shut down one or both halves of the connection.  If *how* is :const:`SHUT_RD`,
    828    further receives are disallowed.  If *how* is :const:`SHUT_WR`, further sends
    829    are disallowed.  If *how* is :const:`SHUT_RDWR`, further sends and receives are
    830    disallowed.  Depending on the platform, shutting down one half of the connection
    831    can also close the opposite half (e.g. on Mac OS X, ``shutdown(SHUT_WR)`` does
    832    not allow further reads on the other end of the connection).
    833 
    834 Note that there are no methods :meth:`read` or :meth:`write`; use
    835 :meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
    836 
    837 Socket objects also have these (read-only) attributes that correspond to the
    838 values given to the :class:`~socket.socket` constructor.
    839 
    840 
    841 .. attribute:: socket.family
    842 
    843    The socket family.
    844 
    845    .. versionadded:: 2.5
    846 
    847 
    848 .. attribute:: socket.type
    849 
    850    The socket type.
    851 
    852    .. versionadded:: 2.5
    853 
    854 
    855 .. attribute:: socket.proto
    856 
    857    The socket protocol.
    858 
    859    .. versionadded:: 2.5
    860 
    861 
    862 .. _socket-example:
    863 
    864 Example
    865 -------
    866 
    867 Here are four minimal example programs using the TCP/IP protocol: a server that
    868 echoes all data that it receives back (servicing only one client), and a client
    869 using it.  Note that a server must perform the sequence :func:`.socket`,
    870 :meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
    871 repeating the :meth:`~socket.accept` to service more than one client), while a
    872 client only needs the sequence :func:`.socket`, :meth:`~socket.connect`.  Also
    873 note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
    874 the socket it is listening on but on the new socket returned by
    875 :meth:`~socket.accept`.
    876 
    877 The first two examples support IPv4 only. ::
    878 
    879    # Echo server program
    880    import socket
    881 
    882    HOST = ''                 # Symbolic name meaning all available interfaces
    883    PORT = 50007              # Arbitrary non-privileged port
    884    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    885    s.bind((HOST, PORT))
    886    s.listen(1)
    887    conn, addr = s.accept()
    888    print 'Connected by', addr
    889    while 1:
    890        data = conn.recv(1024)
    891        if not data: break
    892        conn.sendall(data)
    893    conn.close()
    894 
    895 ::
    896 
    897    # Echo client program
    898    import socket
    899 
    900    HOST = 'daring.cwi.nl'    # The remote host
    901    PORT = 50007              # The same port as used by the server
    902    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    903    s.connect((HOST, PORT))
    904    s.sendall('Hello, world')
    905    data = s.recv(1024)
    906    s.close()
    907    print 'Received', repr(data)
    908 
    909 The next two examples are identical to the above two, but support both IPv4 and
    910 IPv6. The server side will listen to the first address family available (it
    911 should listen to both instead). On most of IPv6-ready systems, IPv6 will take
    912 precedence and the server may not accept IPv4 traffic. The client side will try
    913 to connect to the all addresses returned as a result of the name resolution, and
    914 sends traffic to the first one connected successfully. ::
    915 
    916    # Echo server program
    917    import socket
    918    import sys
    919 
    920    HOST = None               # Symbolic name meaning all available interfaces
    921    PORT = 50007              # Arbitrary non-privileged port
    922    s = None
    923    for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
    924                                  socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
    925        af, socktype, proto, canonname, sa = res
    926        try:
    927            s = socket.socket(af, socktype, proto)
    928        except socket.error as msg:
    929            s = None
    930            continue
    931        try:
    932            s.bind(sa)
    933            s.listen(1)
    934        except socket.error as msg:
    935            s.close()
    936            s = None
    937            continue
    938        break
    939    if s is None:
    940        print 'could not open socket'
    941        sys.exit(1)
    942    conn, addr = s.accept()
    943    print 'Connected by', addr
    944    while 1:
    945        data = conn.recv(1024)
    946        if not data: break
    947        conn.send(data)
    948    conn.close()
    949 
    950 ::
    951 
    952    # Echo client program
    953    import socket
    954    import sys
    955 
    956    HOST = 'daring.cwi.nl'    # The remote host
    957    PORT = 50007              # The same port as used by the server
    958    s = None
    959    for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
    960        af, socktype, proto, canonname, sa = res
    961        try:
    962            s = socket.socket(af, socktype, proto)
    963        except socket.error as msg:
    964            s = None
    965            continue
    966        try:
    967            s.connect(sa)
    968        except socket.error as msg:
    969            s.close()
    970            s = None
    971            continue
    972        break
    973    if s is None:
    974        print 'could not open socket'
    975        sys.exit(1)
    976    s.sendall('Hello, world')
    977    data = s.recv(1024)
    978    s.close()
    979    print 'Received', repr(data)
    980 
    981 
    982 The last example shows how to write a very simple network sniffer with raw
    983 sockets on Windows. The example requires administrator privileges to modify
    984 the interface::
    985 
    986    import socket
    987 
    988    # the public network interface
    989    HOST = socket.gethostbyname(socket.gethostname())
    990 
    991    # create a raw socket and bind it to the public interface
    992    s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
    993    s.bind((HOST, 0))
    994 
    995    # Include IP headers
    996    s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
    997 
    998    # receive all packages
    999    s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
   1000 
   1001    # receive a package
   1002    print s.recvfrom(65565)
   1003 
   1004    # disabled promiscuous mode
   1005    s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
   1006 
   1007 
   1008 Running an example several times with too small delay between executions, could
   1009 lead to this error::
   1010 
   1011    socket.error: [Errno 98] Address already in use
   1012 
   1013 This is because the previous execution has left the socket in a ``TIME_WAIT``
   1014 state, and can't be immediately reused.
   1015 
   1016 There is a :mod:`socket` flag to set, in order to prevent this,
   1017 :data:`socket.SO_REUSEADDR`::
   1018 
   1019    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   1020    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
   1021    s.bind((HOST, PORT))
   1022 
   1023 the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
   1024 ``TIME_WAIT`` state, without waiting for its natural timeout to expire.
   1025