PageRenderTime 75ms CodeModel.GetById 3ms app.highlight 61ms RepoModel.GetById 1ms app.codeStats 0ms

/Doc/library/socket.rst

https://bitbucket.org/christandiono/cpython
ReStructuredText | 1430 lines | 1004 code | 426 blank | 0 comment | 0 complexity | 97fb9dc4f9bc695ad7e38014fc9d7271 MD5 | raw file

Large files files are truncated, but you can click here to view the full file

   1:mod:`socket` --- Low-level networking interface
   2================================================
   3
   4.. module:: socket
   5   :synopsis: Low-level networking interface.
   6
   7
   8This module provides access to the BSD *socket* interface. It is available on
   9all modern Unix systems, Windows, MacOS, OS/2, and probably additional
  10platforms.
  11
  12.. note::
  13
  14   Some behavior may be platform dependent, since calls are made to the operating
  15   system socket APIs.
  16
  17.. index:: object: socket
  18
  19The Python interface is a straightforward transliteration of the Unix system
  20call and library interface for sockets to Python's object-oriented style: the
  21:func:`socket` function returns a :dfn:`socket object` whose methods implement
  22the various socket system calls.  Parameter types are somewhat higher-level than
  23in the C interface: as with :meth:`read` and :meth:`write` operations on Python
  24files, buffer allocation on receive operations is automatic, and buffer length
  25is implicit on send operations.
  26
  27
  28.. seealso::
  29
  30   Module :mod:`socketserver`
  31      Classes that simplify writing network servers.
  32
  33   Module :mod:`ssl`
  34      A TLS/SSL wrapper for socket objects.
  35
  36
  37Socket families
  38---------------
  39
  40Depending on the system and the build options, various socket families
  41are supported by this module.
  42
  43The address format required by a particular socket object is automatically
  44selected based on the address family specified when the socket object was
  45created.  Socket addresses are represented as follows:
  46
  47- The address of an :const:`AF_UNIX` socket bound to a file system node
  48  is represented as a string, using the file system encoding and the
  49  ``'surrogateescape'`` error handler (see :pep:`383`).  An address in
  50  Linux's abstract namespace is returned as a :class:`bytes` object with
  51  an initial null byte; note that sockets in this namespace can
  52  communicate with normal file system sockets, so programs intended to
  53  run on Linux may need to deal with both types of address.  A string or
  54  :class:`bytes` object can be used for either type of address when
  55  passing it as an argument.
  56
  57   .. versionchanged:: 3.3
  58      Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8
  59      encoding.
  60
  61- A pair ``(host, port)`` is used for the :const:`AF_INET` address family,
  62  where *host* is a string representing either a hostname in Internet domain
  63  notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``,
  64  and *port* is an integer.
  65
  66- For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
  67  scopeid)`` is used, where *flowinfo* and *scopeid* represent the ``sin6_flowinfo``
  68  and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C.  For
  69  :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for
  70  backward compatibility.  Note, however, omission of *scopeid* can cause problems
  71  in manipulating scoped IPv6 addresses.
  72
  73- :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``.
  74
  75- Linux-only support for TIPC is available using the :const:`AF_TIPC`
  76  address family.  TIPC is an open, non-IP based networked protocol designed
  77  for use in clustered computer environments.  Addresses are represented by a
  78  tuple, and the fields depend on the address type. The general tuple form is
  79  ``(addr_type, v1, v2, v3 [, scope])``, where:
  80
  81  - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`,
  82    or :const:`TIPC_ADDR_ID`.
  83  - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, and
  84    :const:`TIPC_NODE_SCOPE`.
  85  - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is
  86    the port identifier, and *v3* should be 0.
  87
  88    If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2*
  89    is the lower port number, and *v3* is the upper port number.
  90
  91    If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
  92    reference, and *v3* should be set to 0.
  93
  94    If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
  95    reference, and *v3* should be set to 0.
  96
  97- A tuple ``(interface, )`` is used for the :const:`AF_CAN` address family,
  98  where *interface* is a string representing a network interface name like
  99  ``'can0'``. The network interface name ``''`` can be used to receive packets
 100  from all network interfaces of this family.
 101
 102- A string or a tuple ``(id, unit)`` is used for the :const:`SYSPROTO_CONTROL`
 103  protocol of the :const:`PF_SYSTEM` family. The string is the name of a
 104  kernel control using a dynamically-assigned ID. The tuple can be used if ID
 105  and unit number of the kernel control are known or if a registered ID is
 106  used.
 107
 108  .. versionadded:: 3.3
 109
 110- Certain other address families (:const:`AF_BLUETOOTH`, :const:`AF_PACKET`,
 111  :const:`AF_CAN`) support specific representations.
 112
 113  .. XXX document them!
 114
 115For IPv4 addresses, two special forms are accepted instead of a host address:
 116the empty string represents :const:`INADDR_ANY`, and the string
 117``'<broadcast>'`` represents :const:`INADDR_BROADCAST`.  This behavior is not
 118compatible with IPv6, therefore, you may want to avoid these if you intend
 119to support IPv6 with your Python programs.
 120
 121If you use a hostname in the *host* portion of IPv4/v6 socket address, the
 122program may show a nondeterministic behavior, as Python uses the first address
 123returned from the DNS resolution.  The socket address will be resolved
 124differently into an actual IPv4/v6 address, depending on the results from DNS
 125resolution and/or the host configuration.  For deterministic behavior use a
 126numeric address in *host* portion.
 127
 128All errors raise exceptions.  The normal exceptions for invalid argument types
 129and out-of-memory conditions can be raised; starting from Python 3.3, errors
 130related to socket or address semantics raise :exc:`OSError` or one of its
 131subclasses (they used to raise :exc:`socket.error`).
 132
 133Non-blocking mode is supported through :meth:`~socket.setblocking`.  A
 134generalization of this based on timeouts is supported through
 135:meth:`~socket.settimeout`.
 136
 137
 138Module contents
 139---------------
 140
 141The module :mod:`socket` exports the following constants and functions:
 142
 143
 144.. exception:: error
 145
 146   A deprecated alias of :exc:`OSError`.
 147
 148   .. versionchanged:: 3.3
 149      Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
 150
 151
 152.. exception:: herror
 153
 154   A subclass of :exc:`OSError`, this exception is raised for
 155   address-related errors, i.e. for functions that use *h_errno* in the POSIX
 156   C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
 157   The accompanying value is a pair ``(h_errno, string)`` representing an
 158   error returned by a library call.  *h_errno* is a numeric value, while
 159   *string* represents the description of *h_errno*, as returned by the
 160   :c:func:`hstrerror` C function.
 161
 162   .. versionchanged:: 3.3
 163      This class was made a subclass of :exc:`OSError`.
 164
 165.. exception:: gaierror
 166
 167   A subclass of :exc:`OSError`, this exception is raised for
 168   address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
 169   The accompanying value is a pair ``(error, string)`` representing an error
 170   returned by a library call.  *string* represents the description of
 171   *error*, as returned by the :c:func:`gai_strerror` C function.  The
 172   numeric *error* value will match one of the :const:`EAI_\*` constants
 173   defined in this module.
 174
 175   .. versionchanged:: 3.3
 176      This class was made a subclass of :exc:`OSError`.
 177
 178.. exception:: timeout
 179
 180   A subclass of :exc:`OSError`, this exception is raised when a timeout
 181   occurs on a socket which has had timeouts enabled via a prior call to
 182   :meth:`~socket.settimeout` (or implicitly through
 183   :func:`~socket.setdefaulttimeout`).  The accompanying value is a string
 184   whose value is currently always "timed out".
 185
 186   .. versionchanged:: 3.3
 187      This class was made a subclass of :exc:`OSError`.
 188
 189.. data:: AF_UNIX
 190          AF_INET
 191          AF_INET6
 192
 193   These constants represent the address (and protocol) families, used for the
 194   first argument to :func:`socket`.  If the :const:`AF_UNIX` constant is not
 195   defined then this protocol is unsupported.  More constants may be available
 196   depending on the system.
 197
 198
 199.. data:: SOCK_STREAM
 200          SOCK_DGRAM
 201          SOCK_RAW
 202          SOCK_RDM
 203          SOCK_SEQPACKET
 204
 205   These constants represent the socket types, used for the second argument to
 206   :func:`socket`.  More constants may be available depending on the system.
 207   (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
 208   useful.)
 209
 210.. data:: SOCK_CLOEXEC
 211          SOCK_NONBLOCK
 212
 213   These two constants, if defined, can be combined with the socket types and
 214   allow you to set some flags atomically (thus avoiding possible race
 215   conditions and the need for separate calls).
 216
 217   .. seealso::
 218
 219      `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
 220      for a more thorough explanation.
 221
 222   Availability: Linux >= 2.6.27.
 223
 224   .. versionadded:: 3.2
 225
 226.. data:: SO_*
 227          SOMAXCONN
 228          MSG_*
 229          SOL_*
 230          SCM_*
 231          IPPROTO_*
 232          IPPORT_*
 233          INADDR_*
 234          IP_*
 235          IPV6_*
 236          EAI_*
 237          AI_*
 238          NI_*
 239          TCP_*
 240
 241   Many constants of these forms, documented in the Unix documentation on sockets
 242   and/or the IP protocol, are also defined in the socket module. They are
 243   generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
 244   methods of socket objects.  In most cases, only those symbols that are defined
 245   in the Unix header files are defined; for a few symbols, default values are
 246   provided.
 247
 248.. data:: AF_CAN
 249          PF_CAN
 250          SOL_CAN_*
 251          CAN_*
 252
 253   Many constants of these forms, documented in the Linux documentation, are
 254   also defined in the socket module.
 255
 256   Availability: Linux >= 2.6.25.
 257
 258   .. versionadded:: 3.3
 259
 260.. data:: CAN_BCM
 261          CAN_BCM_*
 262
 263   CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol.
 264   Broadcast manager constants, documented in the Linux documentation, are also
 265   defined in the socket module.
 266
 267   Availability: Linux >= 2.6.25.
 268
 269   .. versionadded:: 3.4
 270
 271.. data:: AF_RDS
 272          PF_RDS
 273          SOL_RDS
 274          RDS_*
 275
 276   Many constants of these forms, documented in the Linux documentation, are
 277   also defined in the socket module.
 278
 279   Availability: Linux >= 2.6.30.
 280
 281   .. versionadded:: 3.3
 282
 283
 284.. data:: SIO_*
 285          RCVALL_*
 286
 287   Constants for Windows' WSAIoctl(). The constants are used as arguments to the
 288   :meth:`ioctl` method of socket objects.
 289
 290
 291.. data:: TIPC_*
 292
 293   TIPC related constants, matching the ones exported by the C socket API. See
 294   the TIPC documentation for more information.
 295
 296
 297.. data:: has_ipv6
 298
 299   This constant contains a boolean value which indicates if IPv6 is supported on
 300   this platform.
 301
 302
 303.. function:: create_connection(address[, timeout[, source_address]])
 304
 305   Connect to a TCP service listening on the Internet *address* (a 2-tuple
 306   ``(host, port)``), and return the socket object.  This is a higher-level
 307   function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
 308   it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
 309   and then try to connect to all possible addresses in turn until a
 310   connection succeeds.  This makes it easy to write clients that are
 311   compatible to both IPv4 and IPv6.
 312
 313   Passing the optional *timeout* parameter will set the timeout on the
 314   socket instance before attempting to connect.  If no *timeout* is
 315   supplied, the global default timeout setting returned by
 316   :func:`getdefaulttimeout` is used.
 317
 318   If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
 319   socket to bind to as its source address before connecting.  If host or port
 320   are '' or 0 respectively the OS default behavior will be used.
 321
 322   .. versionchanged:: 3.2
 323      *source_address* was added.
 324
 325   .. versionchanged:: 3.2
 326      support for the :keyword:`with` statement was added.
 327
 328
 329.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
 330
 331   Translate the *host*/*port* argument into a sequence of 5-tuples that contain
 332   all the necessary arguments for creating a socket connected to that service.
 333   *host* is a domain name, a string representation of an IPv4/v6 address
 334   or ``None``. *port* is a string service name such as ``'http'``, a numeric
 335   port number or ``None``.  By passing ``None`` as the value of *host*
 336   and *port*, you can pass ``NULL`` to the underlying C API.
 337
 338   The *family*, *type* and *proto* arguments can be optionally specified
 339   in order to narrow the list of addresses returned.  Passing zero as a
 340   value for each of these arguments selects the full range of results.
 341   The *flags* argument can be one or several of the ``AI_*`` constants,
 342   and will influence how results are computed and returned.
 343   For example, :const:`AI_NUMERICHOST` will disable domain name resolution
 344   and will raise an error if *host* is a domain name.
 345
 346   The function returns a list of 5-tuples with the following structure:
 347
 348   ``(family, type, proto, canonname, sockaddr)``
 349
 350   In these tuples, *family*, *type*, *proto* are all integers and are
 351   meant to be passed to the :func:`socket` function.  *canonname* will be
 352   a string representing the canonical name of the *host* if
 353   :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
 354   will be empty.  *sockaddr* is a tuple describing a socket address, whose
 355   format depends on the returned *family* (a ``(address, port)`` 2-tuple for
 356   :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
 357   :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
 358   method.
 359
 360   The following example fetches address information for a hypothetical TCP
 361   connection to ``www.python.org`` on port 80 (results may differ on your
 362   system if IPv6 isn't enabled)::
 363
 364      >>> socket.getaddrinfo("www.python.org", 80, proto=socket.SOL_TCP)
 365      [(2, 1, 6, '', ('82.94.164.162', 80)),
 366       (10, 1, 6, '', ('2001:888:2000:d::a2', 80, 0, 0))]
 367
 368   .. versionchanged:: 3.2
 369      parameters can now be passed as single keyword arguments.
 370
 371.. function:: getfqdn([name])
 372
 373   Return a fully qualified domain name for *name*. If *name* is omitted or empty,
 374   it is interpreted as the local host.  To find the fully qualified name, the
 375   hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
 376   host, if available.  The first name which includes a period is selected.  In
 377   case no fully qualified domain name is available, the hostname as returned by
 378   :func:`gethostname` is returned.
 379
 380
 381.. function:: gethostbyname(hostname)
 382
 383   Translate a host name to IPv4 address format.  The IPv4 address is returned as a
 384   string, such as  ``'100.50.200.5'``.  If the host name is an IPv4 address itself
 385   it is returned unchanged.  See :func:`gethostbyname_ex` for a more complete
 386   interface. :func:`gethostbyname` does not support IPv6 name resolution, and
 387   :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
 388
 389
 390.. function:: gethostbyname_ex(hostname)
 391
 392   Translate a host name to IPv4 address format, extended interface. Return a
 393   triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
 394   host name responding to the given *ip_address*, *aliaslist* is a (possibly
 395   empty) list of alternative host names for the same address, and *ipaddrlist* is
 396   a list of IPv4 addresses for the same interface on the same host (often but not
 397   always a single address). :func:`gethostbyname_ex` does not support IPv6 name
 398   resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
 399   stack support.
 400
 401
 402.. function:: gethostname()
 403
 404   Return a string containing the hostname of the machine where  the Python
 405   interpreter is currently executing.
 406
 407   If you want to know the current machine's IP address, you may want to use
 408   ``gethostbyname(gethostname())``. This operation assumes that there is a
 409   valid address-to-host mapping for the host, and the assumption does not
 410   always hold.
 411
 412   Note: :func:`gethostname` doesn't always return the fully qualified domain
 413   name; use ``getfqdn()`` (see above).
 414
 415
 416.. function:: gethostbyaddr(ip_address)
 417
 418   Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
 419   primary host name responding to the given *ip_address*, *aliaslist* is a
 420   (possibly empty) list of alternative host names for the same address, and
 421   *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
 422   host (most likely containing only a single address). To find the fully qualified
 423   domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
 424   both IPv4 and IPv6.
 425
 426
 427.. function:: getnameinfo(sockaddr, flags)
 428
 429   Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
 430   on the settings of *flags*, the result can contain a fully-qualified domain name
 431   or numeric address representation in *host*.  Similarly, *port* can contain a
 432   string port name or a numeric port number.
 433
 434
 435.. function:: getprotobyname(protocolname)
 436
 437   Translate an Internet protocol name (for example, ``'icmp'``) to a constant
 438   suitable for passing as the (optional) third argument to the :func:`socket`
 439   function.  This is usually only needed for sockets opened in "raw" mode
 440   (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
 441   automatically if the protocol is omitted or zero.
 442
 443
 444.. function:: getservbyname(servicename[, protocolname])
 445
 446   Translate an Internet service name and protocol name to a port number for that
 447   service.  The optional protocol name, if given, should be ``'tcp'`` or
 448   ``'udp'``, otherwise any protocol will match.
 449
 450
 451.. function:: getservbyport(port[, protocolname])
 452
 453   Translate an Internet port number and protocol name to a service name for that
 454   service.  The optional protocol name, if given, should be ``'tcp'`` or
 455   ``'udp'``, otherwise any protocol will match.
 456
 457
 458.. function:: socket([family[, type[, proto]]])
 459
 460   Create a new socket using the given address family, socket type and protocol
 461   number.  The address family should be :const:`AF_INET` (the default),
 462   :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
 463   socket type should be :const:`SOCK_STREAM` (the default),
 464   :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
 465   constants. The protocol number is usually zero and may be omitted or in the
 466   case where the address family is :const:`AF_CAN` the protocol should be one
 467   of :const:`CAN_RAW` or :const:`CAN_BCM`.
 468
 469   .. versionchanged:: 3.3
 470      The AF_CAN family was added.
 471      The AF_RDS family was added.
 472
 473  .. versionchanged:: 3.4
 474      The CAN_BCM protocol was added.
 475
 476.. function:: socketpair([family[, type[, proto]]])
 477
 478   Build a pair of connected socket objects using the given address family, socket
 479   type, and protocol number.  Address family, socket type, and protocol number are
 480   as for the :func:`socket` function above. The default family is :const:`AF_UNIX`
 481   if defined on the platform; otherwise, the default is :const:`AF_INET`.
 482   Availability: Unix.
 483
 484   .. versionchanged:: 3.2
 485      The returned socket objects now support the whole socket API, rather
 486      than a subset.
 487
 488
 489.. function:: fromfd(fd, family, type[, proto])
 490
 491   Duplicate the file descriptor *fd* (an integer as returned by a file object's
 492   :meth:`fileno` method) and build a socket object from the result.  Address
 493   family, socket type and protocol number are as for the :func:`socket` function
 494   above. The file descriptor should refer to a socket, but this is not checked ---
 495   subsequent operations on the object may fail if the file descriptor is invalid.
 496   This function is rarely needed, but can be used to get or set socket options on
 497   a socket passed to a program as standard input or output (such as a server
 498   started by the Unix inet daemon).  The socket is assumed to be in blocking mode.
 499
 500
 501.. function:: ntohl(x)
 502
 503   Convert 32-bit positive integers from network to host byte order.  On machines
 504   where the host byte order is the same as network byte order, this is a no-op;
 505   otherwise, it performs a 4-byte swap operation.
 506
 507
 508.. function:: ntohs(x)
 509
 510   Convert 16-bit positive integers from network to host byte order.  On machines
 511   where the host byte order is the same as network byte order, this is a no-op;
 512   otherwise, it performs a 2-byte swap operation.
 513
 514
 515.. function:: htonl(x)
 516
 517   Convert 32-bit positive integers from host to network byte order.  On machines
 518   where the host byte order is the same as network byte order, this is a no-op;
 519   otherwise, it performs a 4-byte swap operation.
 520
 521
 522.. function:: htons(x)
 523
 524   Convert 16-bit positive integers from host to network byte order.  On machines
 525   where the host byte order is the same as network byte order, this is a no-op;
 526   otherwise, it performs a 2-byte swap operation.
 527
 528
 529.. function:: inet_aton(ip_string)
 530
 531   Convert an IPv4 address from dotted-quad string format (for example,
 532   '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
 533   length.  This is useful when conversing with a program that uses the standard C
 534   library and needs objects of type :c:type:`struct in_addr`, which is the C type
 535   for the 32-bit packed binary this function returns.
 536
 537   :func:`inet_aton` also accepts strings with less than three dots; see the
 538   Unix manual page :manpage:`inet(3)` for details.
 539
 540   If the IPv4 address string passed to this function is invalid,
 541   :exc:`OSError` will be raised. Note that exactly what is valid depends on
 542   the underlying C implementation of :c:func:`inet_aton`.
 543
 544   :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
 545   instead for IPv4/v6 dual stack support.
 546
 547
 548.. function:: inet_ntoa(packed_ip)
 549
 550   Convert a 32-bit packed IPv4 address (a bytes object four characters in
 551   length) to its standard dotted-quad string representation (for example,
 552   '123.45.67.89').  This is useful when conversing with a program that uses the
 553   standard C library and needs objects of type :c:type:`struct in_addr`, which
 554   is the C type for the 32-bit packed binary data this function takes as an
 555   argument.
 556
 557   If the byte sequence passed to this function is not exactly 4 bytes in
 558   length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
 559   support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
 560   stack support.
 561
 562
 563.. function:: inet_pton(address_family, ip_string)
 564
 565   Convert an IP address from its family-specific string format to a packed,
 566   binary format. :func:`inet_pton` is useful when a library or network protocol
 567   calls for an object of type :c:type:`struct in_addr` (similar to
 568   :func:`inet_aton`) or :c:type:`struct in6_addr`.
 569
 570   Supported values for *address_family* are currently :const:`AF_INET` and
 571   :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
 572   :exc:`OSError` will be raised. Note that exactly what is valid depends on
 573   both the value of *address_family* and the underlying implementation of
 574   :c:func:`inet_pton`.
 575
 576   Availability: Unix (maybe not all platforms).
 577
 578
 579.. function:: inet_ntop(address_family, packed_ip)
 580
 581   Convert a packed IP address (a bytes object of some number of characters) to its
 582   standard, family-specific string representation (for example, ``'7.10.0.5'`` or
 583   ``'5aef:2b::8'``). :func:`inet_ntop` is useful when a library or network protocol
 584   returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`)
 585   or :c:type:`struct in6_addr`.
 586
 587   Supported values for *address_family* are currently :const:`AF_INET` and
 588   :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the
 589   specified address family, :exc:`ValueError` will be raised.  A
 590   :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
 591
 592   Availability: Unix (maybe not all platforms).
 593
 594
 595..
 596   XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
 597   non-Unix platforms?  The old (obsolete?) 4.2BSD form of the
 598   interface, in which struct msghdr has no msg_control or
 599   msg_controllen members, is not currently supported.
 600
 601.. function:: CMSG_LEN(length)
 602
 603   Return the total length, without trailing padding, of an ancillary
 604   data item with associated data of the given *length*.  This value
 605   can often be used as the buffer size for :meth:`~socket.recvmsg` to
 606   receive a single item of ancillary data, but :rfc:`3542` requires
 607   portable applications to use :func:`CMSG_SPACE` and thus include
 608   space for padding, even when the item will be the last in the
 609   buffer.  Raises :exc:`OverflowError` if *length* is outside the
 610   permissible range of values.
 611
 612   Availability: most Unix platforms, possibly others.
 613
 614   .. versionadded:: 3.3
 615
 616
 617.. function:: CMSG_SPACE(length)
 618
 619   Return the buffer size needed for :meth:`~socket.recvmsg` to
 620   receive an ancillary data item with associated data of the given
 621   *length*, along with any trailing padding.  The buffer space needed
 622   to receive multiple items is the sum of the :func:`CMSG_SPACE`
 623   values for their associated data lengths.  Raises
 624   :exc:`OverflowError` if *length* is outside the permissible range
 625   of values.
 626
 627   Note that some systems might support ancillary data without
 628   providing this function.  Also note that setting the buffer size
 629   using the results of this function may not precisely limit the
 630   amount of ancillary data that can be received, since additional
 631   data may be able to fit into the padding area.
 632
 633   Availability: most Unix platforms, possibly others.
 634
 635   .. versionadded:: 3.3
 636
 637
 638.. function:: getdefaulttimeout()
 639
 640   Return the default timeout in seconds (float) for new socket objects. A value
 641   of ``None`` indicates that new socket objects have no timeout. When the socket
 642   module is first imported, the default is ``None``.
 643
 644
 645.. function:: setdefaulttimeout(timeout)
 646
 647   Set the default timeout in seconds (float) for new socket objects.  When
 648   the socket module is first imported, the default is ``None``.  See
 649   :meth:`~socket.settimeout` for possible values and their respective
 650   meanings.
 651
 652
 653.. function:: sethostname(name)
 654
 655   Set the machine's hostname to *name*.  This will raise a
 656   :exc:`OSError` if you don't have enough rights.
 657
 658   Availability: Unix.
 659
 660   .. versionadded:: 3.3
 661
 662
 663.. function:: if_nameindex()
 664
 665   Return a list of network interface information
 666   (index int, name string) tuples.
 667   :exc:`OSError` if the system call fails.
 668
 669   Availability: Unix.
 670
 671   .. versionadded:: 3.3
 672
 673
 674.. function:: if_nametoindex(if_name)
 675
 676   Return a network interface index number corresponding to an
 677   interface name.
 678   :exc:`OSError` if no interface with the given name exists.
 679
 680   Availability: Unix.
 681
 682   .. versionadded:: 3.3
 683
 684
 685.. function:: if_indextoname(if_index)
 686
 687   Return a network interface name corresponding to a
 688   interface index number.
 689   :exc:`OSError` if no interface with the given index exists.
 690
 691   Availability: Unix.
 692
 693   .. versionadded:: 3.3
 694
 695
 696.. function:: fromshare(data)
 697
 698   Instantiate a socket from data obtained from :meth:`~socket.share`.
 699   The socket is assumed to be in blocking mode.
 700
 701   Availability: Windows.
 702
 703   .. versionadded:: 3.3
 704
 705
 706.. data:: SocketType
 707
 708   This is a Python type object that represents the socket object type. It is the
 709   same as ``type(socket(...))``.
 710
 711
 712.. _socket-objects:
 713
 714Socket Objects
 715--------------
 716
 717Socket objects have the following methods.  Except for :meth:`makefile` these
 718correspond to Unix system calls applicable to sockets.
 719
 720
 721.. method:: socket.accept()
 722
 723   Accept a connection. The socket must be bound to an address and listening for
 724   connections. The return value is a pair ``(conn, address)`` where *conn* is a
 725   *new* socket object usable to send and receive data on the connection, and
 726   *address* is the address bound to the socket on the other end of the connection.
 727
 728
 729.. method:: socket.bind(address)
 730
 731   Bind the socket to *address*.  The socket must not already be bound. (The format
 732   of *address* depends on the address family --- see above.)
 733
 734
 735.. method:: socket.close()
 736
 737   Close the socket.  All future operations on the socket object will fail. The
 738   remote end will receive no more data (after queued data is flushed). Sockets are
 739   automatically closed when they are garbage-collected.
 740
 741   .. note::
 742      :meth:`close()` releases the resource associated with a connection but
 743      does not necessarily close the connection immediately.  If you want
 744      to close the connection in a timely fashion, call :meth:`shutdown()`
 745      before :meth:`close()`.
 746
 747
 748.. method:: socket.connect(address)
 749
 750   Connect to a remote socket at *address*. (The format of *address* depends on the
 751   address family --- see above.)
 752
 753
 754.. method:: socket.connect_ex(address)
 755
 756   Like ``connect(address)``, but return an error indicator instead of raising an
 757   exception for errors returned by the C-level :c:func:`connect` call (other
 758   problems, such as "host not found," can still raise exceptions).  The error
 759   indicator is ``0`` if the operation succeeded, otherwise the value of the
 760   :c:data:`errno` variable.  This is useful to support, for example, asynchronous
 761   connects.
 762
 763
 764.. method:: socket.detach()
 765
 766   Put the socket object into closed state without actually closing the
 767   underlying file descriptor.  The file descriptor is returned, and can
 768   be reused for other purposes.
 769
 770   .. versionadded:: 3.2
 771
 772
 773.. method:: socket.fileno()
 774
 775   Return the socket's file descriptor (a small integer).  This is useful with
 776   :func:`select.select`.
 777
 778   Under Windows the small integer returned by this method cannot be used where a
 779   file descriptor can be used (such as :func:`os.fdopen`).  Unix does not have
 780   this limitation.
 781
 782
 783.. method:: socket.getpeername()
 784
 785   Return the remote address to which the socket is connected.  This is useful to
 786   find out the port number of a remote IPv4/v6 socket, for instance. (The format
 787   of the address returned depends on the address family --- see above.)  On some
 788   systems this function is not supported.
 789
 790
 791.. method:: socket.getsockname()
 792
 793   Return the socket's own address.  This is useful to find out the port number of
 794   an IPv4/v6 socket, for instance. (The format of the address returned depends on
 795   the address family --- see above.)
 796
 797
 798.. method:: socket.getsockopt(level, optname[, buflen])
 799
 800   Return the value of the given socket option (see the Unix man page
 801   :manpage:`getsockopt(2)`).  The needed symbolic constants (:const:`SO_\*` etc.)
 802   are defined in this module.  If *buflen* is absent, an integer option is assumed
 803   and its integer value is returned by the function.  If *buflen* is present, it
 804   specifies the maximum length of the buffer used to receive the option in, and
 805   this buffer is returned as a bytes object.  It is up to the caller to decode the
 806   contents of the buffer (see the optional built-in module :mod:`struct` for a way
 807   to decode C structures encoded as byte strings).
 808
 809
 810.. method:: socket.gettimeout()
 811
 812   Return the timeout in seconds (float) associated with socket operations,
 813   or ``None`` if no timeout is set.  This reflects the last call to
 814   :meth:`setblocking` or :meth:`settimeout`.
 815
 816
 817.. method:: socket.ioctl(control, option)
 818
 819   :platform: Windows
 820
 821   The :meth:`ioctl` method is a limited interface to the WSAIoctl system
 822   interface.  Please refer to the `Win32 documentation
 823   <http://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
 824   information.
 825
 826   On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
 827   functions may be used; they accept a socket object as their first argument.
 828
 829.. method:: socket.listen(backlog)
 830
 831   Listen for connections made to the socket.  The *backlog* argument specifies the
 832   maximum number of queued connections and should be at least 0; the maximum value
 833   is system-dependent (usually 5), the minimum value is forced to 0.
 834
 835
 836.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
 837                            errors=None, newline=None)
 838
 839   .. index:: single: I/O control; buffering
 840
 841   Return a :term:`file object` associated with the socket.  The exact returned
 842   type depends on the arguments given to :meth:`makefile`.  These arguments are
 843   interpreted the same way as by the built-in :func:`open` function.
 844
 845   Closing the file object won't close the socket unless there are no remaining
 846   references to the socket.  The socket must be in blocking mode; it can have
 847   a timeout, but the file object's internal buffer may end up in a inconsistent
 848   state if a timeout occurs.
 849
 850   .. note::
 851
 852      On Windows, the file-like object created by :meth:`makefile` cannot be
 853      used where a file object with a file descriptor is expected, such as the
 854      stream arguments of :meth:`subprocess.Popen`.
 855
 856
 857.. method:: socket.recv(bufsize[, flags])
 858
 859   Receive data from the socket.  The return value is a bytes object representing the
 860   data received.  The maximum amount of data to be received at once is specified
 861   by *bufsize*.  See the Unix manual page :manpage:`recv(2)` for the meaning of
 862   the optional argument *flags*; it defaults to zero.
 863
 864   .. note::
 865
 866      For best match with hardware and network realities, the value of  *bufsize*
 867      should be a relatively small power of 2, for example, 4096.
 868
 869
 870.. method:: socket.recvfrom(bufsize[, flags])
 871
 872   Receive data from the socket.  The return value is a pair ``(bytes, address)``
 873   where *bytes* is a bytes object representing the data received and *address* is the
 874   address of the socket sending the data.  See the Unix manual page
 875   :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
 876   to zero. (The format of *address* depends on the address family --- see above.)
 877
 878
 879.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
 880
 881   Receive normal data (up to *bufsize* bytes) and ancillary data from
 882   the socket.  The *ancbufsize* argument sets the size in bytes of
 883   the internal buffer used to receive the ancillary data; it defaults
 884   to 0, meaning that no ancillary data will be received.  Appropriate
 885   buffer sizes for ancillary data can be calculated using
 886   :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
 887   into the buffer might be truncated or discarded.  The *flags*
 888   argument defaults to 0 and has the same meaning as for
 889   :meth:`recv`.
 890
 891   The return value is a 4-tuple: ``(data, ancdata, msg_flags,
 892   address)``.  The *data* item is a :class:`bytes` object holding the
 893   non-ancillary data received.  The *ancdata* item is a list of zero
 894   or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
 895   the ancillary data (control messages) received: *cmsg_level* and
 896   *cmsg_type* are integers specifying the protocol level and
 897   protocol-specific type respectively, and *cmsg_data* is a
 898   :class:`bytes` object holding the associated data.  The *msg_flags*
 899   item is the bitwise OR of various flags indicating conditions on
 900   the received message; see your system documentation for details.
 901   If the receiving socket is unconnected, *address* is the address of
 902   the sending socket, if available; otherwise, its value is
 903   unspecified.
 904
 905   On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
 906   pass file descriptors between processes over an :const:`AF_UNIX`
 907   socket.  When this facility is used (it is often restricted to
 908   :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
 909   ancillary data, items of the form ``(socket.SOL_SOCKET,
 910   socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
 911   representing the new file descriptors as a binary array of the
 912   native C :c:type:`int` type.  If :meth:`recvmsg` raises an
 913   exception after the system call returns, it will first attempt to
 914   close any file descriptors received via this mechanism.
 915
 916   Some systems do not indicate the truncated length of ancillary data
 917   items which have been only partially received.  If an item appears
 918   to extend beyond the end of the buffer, :meth:`recvmsg` will issue
 919   a :exc:`RuntimeWarning`, and will return the part of it which is
 920   inside the buffer provided it has not been truncated before the
 921   start of its associated data.
 922
 923   On systems which support the :const:`SCM_RIGHTS` mechanism, the
 924   following function will receive up to *maxfds* file descriptors,
 925   returning the message data and a list containing the descriptors
 926   (while ignoring unexpected conditions such as unrelated control
 927   messages being received).  See also :meth:`sendmsg`. ::
 928
 929      import socket, array
 930
 931      def recv_fds(sock, msglen, maxfds):
 932          fds = array.array("i")   # Array of ints
 933          msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
 934          for cmsg_level, cmsg_type, cmsg_data in ancdata:
 935              if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
 936                  # Append data, ignoring any truncated integers at the end.
 937                  fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
 938          return msg, list(fds)
 939
 940   Availability: most Unix platforms, possibly others.
 941
 942   .. versionadded:: 3.3
 943
 944
 945.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
 946
 947   Receive normal data and ancillary data from the socket, behaving as
 948   :meth:`recvmsg` would, but scatter the non-ancillary data into a
 949   series of buffers instead of returning a new bytes object.  The
 950   *buffers* argument must be an iterable of objects that export
 951   writable buffers (e.g. :class:`bytearray` objects); these will be
 952   filled with successive chunks of the non-ancillary data until it
 953   has all been written or there are no more buffers.  The operating
 954   system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
 955   on the number of buffers that can be used.  The *ancbufsize* and
 956   *flags* arguments have the same meaning as for :meth:`recvmsg`.
 957
 958   The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
 959   address)``, where *nbytes* is the total number of bytes of
 960   non-ancillary data written into the buffers, and *ancdata*,
 961   *msg_flags* and *address* are the same as for :meth:`recvmsg`.
 962
 963   Example::
 964
 965      >>> import socket
 966      >>> s1, s2 = socket.socketpair()
 967      >>> b1 = bytearray(b'----')
 968      >>> b2 = bytearray(b'0123456789')
 969      >>> b3 = bytearray(b'--------------')
 970      >>> s1.send(b'Mary had a little lamb')
 971      22
 972      >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
 973      (22, [], 0, None)
 974      >>> [b1, b2, b3]
 975      [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
 976
 977   Availability: most Unix platforms, possibly others.
 978
 979   .. versionadded:: 3.3
 980
 981
 982.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
 983
 984   Receive data from the socket, writing it into *buffer* instead of creating a
 985   new bytestring.  The return value is a pair ``(nbytes, address)`` where *nbytes* is
 986   the number of bytes received and *address* is the address of the socket sending
 987   the data.  See the Unix manual page :manpage:`recv(2)` for the meaning of the
 988   optional argument *flags*; it defaults to zero.  (The format of *address*
 989   depends on the address family --- see above.)
 990
 991
 992.. method:: socket.recv_into(buffer[, nbytes[, flags]])
 993
 994   Receive up to *nbytes* bytes from the socket, storing the data into a buffer
 995   rather than creating a new bytestring.  If *nbytes* is not specified (or 0),
 996   receive up to the size available in the given buffer.  Returns the number of
 997   bytes received.  See the Unix manual page :manpage:`recv(2)` for the meaning
 998   of the optional argument *flags*; it defaults to zero.
 999
1000
1001.. method:: socket.send(bytes[, flags])
1002
1003   Send data to the socket.  The socket must be connected to a remote socket.  The
1004   optional *flags* argument has the same meaning as for :meth:`recv` above.
1005   Returns the number of bytes sent. Applications are responsible for checking that
1006   all data has been sent; if only some of the data was transmitted, the
1007   application needs to attempt delivery of the remaining data. For further
1008   information on this topic, consult the :ref:`socket-howto`.
1009
1010
1011.. method:: socket.sendall(bytes[, flags])
1012
1013   Send data to the socket.  The socket must be connected to a remote socket.  The
1014   optional *flags* argument has the same meaning as for :meth:`recv` above.
1015   Unlike :meth:`send`, this method continues to send data from *bytes* until
1016   either all data has been sent or an error occurs.  ``None`` is returned on
1017   success.  On error, an exception is raised, and there is no way to determine how
1018   much data, if any, was successfully sent.
1019
1020
1021.. method:: socket.sendto(bytes, address)
1022            socket.sendto(bytes, flags, address)
1023
1024   Send data to the socket.  The socket should not be connected to a remote socket,
1025   since the destination socket is specified by *address*.  The optional *flags*
1026   argument has the same meaning as for :meth:`recv` above.  Return the number of
1027   bytes sent. (The format of *address* depends on the address family --- see
1028   above.)
1029
1030
1031.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1032
1033   Send normal and ancillary data to the socket, gathering the
1034   non-ancillary data from a series of buffers and concatenating it
1035   into a single message.  The *buffers* argument specifies the
1036   non-ancillary data as an iterable of buffer-compatible objects
1037   (e.g. :class:`bytes` objects); the operating system may set a limit
1038   (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1039   that can be used.  The *ancdata* argument specifies the ancillary
1040   data (control messages) as an iterable of zero or more tuples
1041   ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1042   *cmsg_type* are integers specifying the protocol level and
1043   protocol-specific type respectively, and *cmsg_data* is a
1044   buffer-compatible object holding the associated data.  Note that
1045   some systems (in particular, systems without :func:`CMSG_SPACE`)
1046   might support sending only one control message per call.  The
1047   *flags* argument defaults to 0 and has the same meaning as for
1048   :meth:`send`.  If *address* is supplied and not ``None``, it sets a
1049   destination address for the message.  The return value is the
1050   number of bytes of non-ancillary data sent.
1051
1052   The following function sends the list of file descriptors *fds*
1053   over an :const:`AF_UNIX` socket, on systems which support the
1054   :const:`SCM_RIGHTS` mechanism.  See also :meth:`recvmsg`. ::
1055
1056      import socket, array
1057
1058      def send_fds(sock, msg, fds):
1059          return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1060
1061   Availability: most Unix platforms, possibly others.
1062
1063   .. versionadded:: 3.3
1064
1065
1066.. method:: socket.setblocking(flag)
1067
1068   Set blocking or non-blocking mode of the socket: if *flag* is false, the
1069   socket is set to non-blocking, else to blocking mode.
1070
1071   This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1072
1073   * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1074
1075   * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
1076
1077
1078.. method:: socket.settimeout(value)
1079
1080   Set a timeout on blocking socket operations.  The *value* argument can be a
1081   nonnegative floating point number expressing seconds, or ``None``.
1082   If a non-zero value is given, subsequent socket operations will raise a
1083   :exc:`timeout` exception if the timeout period *value* has elapsed before
1084   the operation has completed.  If zero is given, the socket is put in
1085   non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
1086
1087   For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
1088
1089
1090.. method:: socket.setsockopt(level, optname, value)
1091
1092   .. index:: module: struct
1093
1094   Set the value of the given socket option (see the Unix manual page
1095   :manpage:`setsockopt(2)`).  The needed symbolic constants are defined in the
1096   :mod:`socket` module (:const:`SO_\*` etc.).  The value can be an integer or a
1097   bytes object representing a buffer.  In the latter case it is up to the caller to
1098   ensure that the bytestring contains the proper bits (see the optional built-in
1099   module :mod:`struct` for a way to encode C structures as bytestrings).
1100
1101
1102.. method:: socket.shutdown(how)
1103
1104   Shut down one or both halves of the connection.  If *how* is :const:`SHUT_RD`,
1105   further receives are disallowed.  If *how* is :const:`SHUT_WR`, further sends
1106   are disallowed.  If *how* is :const:`SHUT_RDWR`, further sends and receives are
1107   disallowed.
1108
1109
1110.. method:: socket.share(process_id)
1111
1112    :platform: Windows
1113
1114    Duplacet a socket and prepare it for sharing with a target process.  The
1115    target process must be provided with *process_id*.  The resulting bytes object
1116    can then be passed to the target process using some form of interprocess
1117    communication and the socket can be recreated there using :func:`fromshare`.
1118    Once this method has been called, it is safe to close the socket since
1119    the operating system has already duplicated it for the target process.
1120
1121   .. versionadded:: 3.3
1122
1123
1124Note that there are no methods :meth:`read` or :meth:`write`; use
1125:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
1126
1127Socket objects also have these (read-only) attributes that correspond to the
1128values given to the :class:`socket` constructor.
1129
1130
1131.. attribute:: socket.family
1132
1133   The socket family.
1134
1135
1136.. attribute:: socket.type
1137
1138   The socket type.
1139
1140
1141.. attribute:: socket.proto
1142
1143   The socket protocol.
1144
1145
1146
1147.. _socket-timeouts:
1148
1149Notes on socket timeouts
1150------------------------
1151
1152A socket object can be in one of three modes: blocking, non-blocking, or
1153timeout.  Sockets are by default always created in blocking mode, but this
1154can be changed by calling :func:`setdefaulttimeout`.
1155
1156* In *blocking mode*, operations block until complete or the system returns
1157  an error (such as connection timed out).
1158
1159* In *non-blocking mode*, operations fail (with an error that is unfortunately
1160  system-dependent) if they cannot be completed immediately: functions from the
1161  :mod:`select` can be used to know when and whether a socket is available for
1162  reading or writing.
1163
1164* In *timeout mode*, operations fail if they cannot be completed within the
1165  timeout specified for the socket (they raise a :exc:`timeout` exception)
1166  or if the system returns an error.
1167
1168.. note::
1169   At the operating system level, sockets in *timeout mode* are internally set
1170   in non-blocking mode.  Also, the blocking and timeout modes are shared between
1171   file descriptors and socket objects that refer to the same network endpoint.
1172   This implementation detail can have visible consequences if e.g. you decide
1173   to use the :meth:`~socket.fileno()` of a socket.
1174
1175Timeouts and the ``connect`` method
1176^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1177
1178The :meth:`~socket.connect` operation is also subject to the timeout
1179setting, and in general it is recommended to call :meth:`~socket.settimeout`
1180before calling :meth:`~socket.connect` or pass a timeout parameter to
1181:meth:`create_connection`.  However, the system network stack may also
1182return a connection timeout error of its own regardless of any Python socket
1183timeout setting.
1184
1185Timeouts and the ``accept`` method
1186^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1187
1188If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1189the :meth:`~socket.accept` method inherit that timeout.  Otherwise, the
1190behaviour depends on settings of the listening socket:
1191
1192* if the listening socket is in *blocking mode* or in *timeout mode*,
1193  the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1194
1195* if the listening socket is in *non-blocking mode*, whether the socket
1196  returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1197  is operating system-dependent.  If you want to ensure cross-platform
1198  behaviour, it is recommended you manually override this setting.
1199
1200
1201.. _socket-example:
1202
1203Example
1204-------
1205
1206Here are four minimal example programs using the TCP/IP protocol: a server that
1207echoes all data that it receives back (servicing only one client), and a client
1208using it.  Note that a server must perform the sequence :func:`socket`,
1209:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1210repeating the :meth:`~socket.accept` to service more than one client), while a
1211client only needs the sequence :func:`socket`, :meth:`~socket.connect`.  Also
1212note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1213the socket it is listening on but on the new socket returned by
1214:meth:`~socket.accept`.
1215
1216The first two examples support IPv4 only. ::
1217
1218   # Echo server program
1219   import socket
1220
1221   HOST = ''                 # Symbolic name meaning all available interfaces
1222   PORT = 50007              # Arbitrary non-privileged port
1223   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1224   s.bind((HOST, PORT))
1225   s.listen(1)
1226   conn, addr = s.accept()
1227   print('Connected by', addr)
1228   while True:
1229       data = conn.recv(1024)
1230       if not data: break
1231       conn.sendall(data)
1232   conn.close()
1233
1234::
1235
1236   # Echo client program
1237   import socket
1238
1239   HOST = 'daring.cwi.nl'    # The remote host
1240   PORT = 50007              # The same port as used by the server
1241   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1242   s.connect((HOST, PORT))
1243   s.sendall(b'Hello, world')
1244   data = s.recv(1024)
1245   s.close()
1246   print('Received', repr(data))
1247
1248The next two examples are identical to the above two, but support both IPv4 and
1249IPv6. The server side will listen to the …

Large files files are truncated, but you can click here to view the full file