PageRenderTime 69ms CodeModel.GetById 20ms app.highlight 37ms RepoModel.GetById 1ms app.codeStats 1ms

/Doc/library/socket.rst

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

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