PageRenderTime 54ms CodeModel.GetById 12ms app.highlight 30ms RepoModel.GetById 1ms app.codeStats 1ms

/library/socket.rst

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

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