| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1 | :mod:`socket` --- Low-level networking interface | 
 | 2 | ================================================ | 
 | 3 |  | 
 | 4 | .. module:: socket | 
 | 5 |    :synopsis: Low-level networking interface. | 
 | 6 |  | 
 | 7 |  | 
 | 8 | This module provides access to the BSD *socket* interface. It is available on | 
| Andrew Kuchling | 98f2bbf | 2014-03-01 07:53:28 -0500 | [diff] [blame] | 9 | all modern Unix systems, Windows, MacOS, and probably additional platforms. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 10 |  | 
 | 11 | .. note:: | 
 | 12 |  | 
 | 13 |    Some behavior may be platform dependent, since calls are made to the operating | 
 | 14 |    system socket APIs. | 
 | 15 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 16 | .. index:: object: socket | 
 | 17 |  | 
 | 18 | The Python interface is a straightforward transliteration of the Unix system | 
 | 19 | call and library interface for sockets to Python's object-oriented style: the | 
| Ezio Melotti | c048d98 | 2013-04-17 04:10:26 +0300 | [diff] [blame] | 20 | :func:`.socket` function returns a :dfn:`socket object` whose methods implement | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 21 | the various socket system calls.  Parameter types are somewhat higher-level than | 
 | 22 | in the C interface: as with :meth:`read` and :meth:`write` operations on Python | 
 | 23 | files, buffer allocation on receive operations is automatic, and buffer length | 
 | 24 | is implicit on send operations. | 
 | 25 |  | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 26 |  | 
| Antoine Pitrou | e1bc898 | 2011-01-02 22:12:22 +0000 | [diff] [blame] | 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 |  | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 36 | Socket families | 
 | 37 | --------------- | 
 | 38 |  | 
 | 39 | Depending on the system and the build options, various socket families | 
 | 40 | are supported by this module. | 
 | 41 |  | 
| Antoine Pitrou | 6ec29e2 | 2011-12-16 14:46:36 +0100 | [diff] [blame] | 42 | The address format required by a particular socket object is automatically | 
 | 43 | selected based on the address family specified when the socket object was | 
 | 44 | created.  Socket addresses are represented as follows: | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 45 |  | 
| Antoine Pitrou | 6ec29e2 | 2011-12-16 14:46:36 +0100 | [diff] [blame] | 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 | 
| Serhiy Storchaka | 8490f5a | 2015-03-20 09:00:36 +0200 | [diff] [blame] | 49 |   Linux's abstract namespace is returned as a :term:`bytes-like object` with | 
| Antoine Pitrou | 6ec29e2 | 2011-12-16 14:46:36 +0100 | [diff] [blame] | 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 | 
| Serhiy Storchaka | 8490f5a | 2015-03-20 09:00:36 +0200 | [diff] [blame] | 53 |   bytes-like object can be used for either type of address when | 
| Antoine Pitrou | 6ec29e2 | 2011-12-16 14:46:36 +0100 | [diff] [blame] | 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. | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 59 |  | 
| Berker Peksag | 253739d | 2016-01-30 19:23:29 +0200 | [diff] [blame] | 60 |    .. versionchanged:: 3.5 | 
| Serhiy Storchaka | 8490f5a | 2015-03-20 09:00:36 +0200 | [diff] [blame] | 61 |       Writable :term:`bytes-like object` is now accepted. | 
 | 62 |  | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 63 | - A pair ``(host, port)`` is used for the :const:`AF_INET` address family, | 
 | 64 |   where *host* is a string representing either a hostname in Internet domain | 
 | 65 |   notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``, | 
| Sandro Tosi | 27b130e | 2012-06-14 00:37:09 +0200 | [diff] [blame] | 66 |   and *port* is an integer. | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 67 |  | 
 | 68 | - For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo, | 
 | 69 |   scopeid)`` is used, where *flowinfo* and *scopeid* represent the ``sin6_flowinfo`` | 
 | 70 |   and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C.  For | 
 | 71 |   :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for | 
 | 72 |   backward compatibility.  Note, however, omission of *scopeid* can cause problems | 
 | 73 |   in manipulating scoped IPv6 addresses. | 
 | 74 |  | 
 | 75 | - :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``. | 
 | 76 |  | 
 | 77 | - Linux-only support for TIPC is available using the :const:`AF_TIPC` | 
 | 78 |   address family.  TIPC is an open, non-IP based networked protocol designed | 
 | 79 |   for use in clustered computer environments.  Addresses are represented by a | 
 | 80 |   tuple, and the fields depend on the address type. The general tuple form is | 
 | 81 |   ``(addr_type, v1, v2, v3 [, scope])``, where: | 
 | 82 |  | 
| Éric Araujo | c4d7d8c | 2011-11-29 16:46:38 +0100 | [diff] [blame] | 83 |   - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`, | 
 | 84 |     or :const:`TIPC_ADDR_ID`. | 
 | 85 |   - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, and | 
 | 86 |     :const:`TIPC_NODE_SCOPE`. | 
 | 87 |   - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 88 |     the port identifier, and *v3* should be 0. | 
 | 89 |  | 
| Éric Araujo | c4d7d8c | 2011-11-29 16:46:38 +0100 | [diff] [blame] | 90 |     If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2* | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 91 |     is the lower port number, and *v3* is the upper port number. | 
 | 92 |  | 
| Éric Araujo | c4d7d8c | 2011-11-29 16:46:38 +0100 | [diff] [blame] | 93 |     If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 94 |     reference, and *v3* should be set to 0. | 
 | 95 |  | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 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 |  | 
| Martin v. Löwis | 9d6c669 | 2012-02-03 17:44:58 +0100 | [diff] [blame] | 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 |  | 
| Martin Panter | d1a9858 | 2015-09-09 06:47:58 +0000 | [diff] [blame] | 109 | - :const:`AF_BLUETOOTH` supports the following protocols and address | 
 | 110 |   formats: | 
 | 111 |  | 
 | 112 |   - :const:`BTPROTO_L2CAP` accepts ``(bdaddr, psm)`` where ``bdaddr`` is | 
 | 113 |     the Bluetooth address as a string and ``psm`` is an integer. | 
 | 114 |  | 
 | 115 |   - :const:`BTPROTO_RFCOMM` accepts ``(bdaddr, channel)`` where ``bdaddr`` | 
 | 116 |     is the Bluetooth address as a string and ``channel`` is an integer. | 
 | 117 |  | 
 | 118 |   - :const:`BTPROTO_HCI` accepts ``(device_id,)`` where ``device_id`` is | 
 | 119 |     either an integer or a string with the Bluetooth address of the | 
 | 120 |     interface. (This depends on your OS; NetBSD and DragonFlyBSD expect | 
 | 121 |     a Bluetooth address while everything else expects an integer.) | 
 | 122 |  | 
 | 123 |     .. versionchanged:: 3.2 | 
 | 124 |        NetBSD and DragonFlyBSD support added. | 
 | 125 |  | 
 | 126 |   - :const:`BTPROTO_SCO` accepts ``bdaddr`` where ``bdaddr`` is a | 
| Martin Panter | d830262 | 2015-09-11 02:23:41 +0000 | [diff] [blame] | 127 |     :class:`bytes` object containing the Bluetooth address in a | 
| Martin Panter | d1a9858 | 2015-09-09 06:47:58 +0000 | [diff] [blame] | 128 |     string format. (ex. ``b'12:23:34:45:56:67'``) This protocol is not | 
 | 129 |     supported under FreeBSD. | 
 | 130 |  | 
 | 131 | - Certain other address families (:const:`AF_PACKET`, :const:`AF_CAN`) | 
 | 132 |   support specific representations. | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 133 |  | 
 | 134 |   .. XXX document them! | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 135 |  | 
 | 136 | For IPv4 addresses, two special forms are accepted instead of a host address: | 
 | 137 | the empty string represents :const:`INADDR_ANY`, and the string | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 138 | ``'<broadcast>'`` represents :const:`INADDR_BROADCAST`.  This behavior is not | 
 | 139 | compatible with IPv6, therefore, you may want to avoid these if you intend | 
 | 140 | to support IPv6 with your Python programs. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 141 |  | 
 | 142 | If you use a hostname in the *host* portion of IPv4/v6 socket address, the | 
 | 143 | program may show a nondeterministic behavior, as Python uses the first address | 
 | 144 | returned from the DNS resolution.  The socket address will be resolved | 
 | 145 | differently into an actual IPv4/v6 address, depending on the results from DNS | 
 | 146 | resolution and/or the host configuration.  For deterministic behavior use a | 
 | 147 | numeric address in *host* portion. | 
 | 148 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 149 | All errors raise exceptions.  The normal exceptions for invalid argument types | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 150 | and out-of-memory conditions can be raised; starting from Python 3.3, errors | 
 | 151 | related to socket or address semantics raise :exc:`OSError` or one of its | 
 | 152 | subclasses (they used to raise :exc:`socket.error`). | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 153 |  | 
| Georg Brandl | 8569e58 | 2010-05-19 20:57:08 +0000 | [diff] [blame] | 154 | Non-blocking mode is supported through :meth:`~socket.setblocking`.  A | 
 | 155 | generalization of this based on timeouts is supported through | 
 | 156 | :meth:`~socket.settimeout`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 157 |  | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 158 |  | 
 | 159 | Module contents | 
 | 160 | --------------- | 
 | 161 |  | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 162 | The module :mod:`socket` exports the following elements. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 163 |  | 
 | 164 |  | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 165 | Exceptions | 
 | 166 | ^^^^^^^^^^ | 
 | 167 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 168 | .. exception:: error | 
 | 169 |  | 
| Antoine Pitrou | 70fa31c | 2011-10-12 16:20:53 +0200 | [diff] [blame] | 170 |    A deprecated alias of :exc:`OSError`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 171 |  | 
| Antoine Pitrou | 70fa31c | 2011-10-12 16:20:53 +0200 | [diff] [blame] | 172 |    .. versionchanged:: 3.3 | 
 | 173 |       Following :pep:`3151`, this class was made an alias of :exc:`OSError`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 174 |  | 
 | 175 |  | 
 | 176 | .. exception:: herror | 
 | 177 |  | 
| Antoine Pitrou | 70fa31c | 2011-10-12 16:20:53 +0200 | [diff] [blame] | 178 |    A subclass of :exc:`OSError`, this exception is raised for | 
| Antoine Pitrou | f06576d | 2011-02-28 22:38:07 +0000 | [diff] [blame] | 179 |    address-related errors, i.e. for functions that use *h_errno* in the POSIX | 
 | 180 |    C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`. | 
 | 181 |    The accompanying value is a pair ``(h_errno, string)`` representing an | 
 | 182 |    error returned by a library call.  *h_errno* is a numeric value, while | 
 | 183 |    *string* represents the description of *h_errno*, as returned by the | 
 | 184 |    :c:func:`hstrerror` C function. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 185 |  | 
| Antoine Pitrou | 70fa31c | 2011-10-12 16:20:53 +0200 | [diff] [blame] | 186 |    .. versionchanged:: 3.3 | 
 | 187 |       This class was made a subclass of :exc:`OSError`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 188 |  | 
 | 189 | .. exception:: gaierror | 
 | 190 |  | 
| Antoine Pitrou | 70fa31c | 2011-10-12 16:20:53 +0200 | [diff] [blame] | 191 |    A subclass of :exc:`OSError`, this exception is raised for | 
| Antoine Pitrou | f06576d | 2011-02-28 22:38:07 +0000 | [diff] [blame] | 192 |    address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`. | 
 | 193 |    The accompanying value is a pair ``(error, string)`` representing an error | 
 | 194 |    returned by a library call.  *string* represents the description of | 
 | 195 |    *error*, as returned by the :c:func:`gai_strerror` C function.  The | 
 | 196 |    numeric *error* value will match one of the :const:`EAI_\*` constants | 
 | 197 |    defined in this module. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 198 |  | 
| Antoine Pitrou | 70fa31c | 2011-10-12 16:20:53 +0200 | [diff] [blame] | 199 |    .. versionchanged:: 3.3 | 
 | 200 |       This class was made a subclass of :exc:`OSError`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 201 |  | 
 | 202 | .. exception:: timeout | 
 | 203 |  | 
| Antoine Pitrou | 70fa31c | 2011-10-12 16:20:53 +0200 | [diff] [blame] | 204 |    A subclass of :exc:`OSError`, this exception is raised when a timeout | 
| Antoine Pitrou | f06576d | 2011-02-28 22:38:07 +0000 | [diff] [blame] | 205 |    occurs on a socket which has had timeouts enabled via a prior call to | 
 | 206 |    :meth:`~socket.settimeout` (or implicitly through | 
 | 207 |    :func:`~socket.setdefaulttimeout`).  The accompanying value is a string | 
 | 208 |    whose value is currently always "timed out". | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 209 |  | 
| Antoine Pitrou | 70fa31c | 2011-10-12 16:20:53 +0200 | [diff] [blame] | 210 |    .. versionchanged:: 3.3 | 
 | 211 |       This class was made a subclass of :exc:`OSError`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 212 |  | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 213 |  | 
 | 214 | Constants | 
 | 215 | ^^^^^^^^^ | 
 | 216 |  | 
| Ethan Furman | 7184bac | 2014-10-14 18:56:53 -0700 | [diff] [blame] | 217 |    The AF_* and SOCK_* constants are now :class:`AddressFamily` and | 
 | 218 |    :class:`SocketKind` :class:`.IntEnum` collections. | 
 | 219 |  | 
 | 220 |    .. versionadded:: 3.4 | 
 | 221 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 222 | .. data:: AF_UNIX | 
 | 223 |           AF_INET | 
 | 224 |           AF_INET6 | 
 | 225 |  | 
 | 226 |    These constants represent the address (and protocol) families, used for the | 
| Ezio Melotti | c048d98 | 2013-04-17 04:10:26 +0300 | [diff] [blame] | 227 |    first argument to :func:`.socket`.  If the :const:`AF_UNIX` constant is not | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 228 |    defined then this protocol is unsupported.  More constants may be available | 
 | 229 |    depending on the system. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 230 |  | 
 | 231 |  | 
 | 232 | .. data:: SOCK_STREAM | 
 | 233 |           SOCK_DGRAM | 
 | 234 |           SOCK_RAW | 
 | 235 |           SOCK_RDM | 
 | 236 |           SOCK_SEQPACKET | 
 | 237 |  | 
 | 238 |    These constants represent the socket types, used for the second argument to | 
| Ezio Melotti | c048d98 | 2013-04-17 04:10:26 +0300 | [diff] [blame] | 239 |    :func:`.socket`.  More constants may be available depending on the system. | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 240 |    (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally | 
 | 241 |    useful.) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 242 |  | 
| Antoine Pitrou | b1c5496 | 2010-10-14 15:05:38 +0000 | [diff] [blame] | 243 | .. data:: SOCK_CLOEXEC | 
 | 244 |           SOCK_NONBLOCK | 
 | 245 |  | 
 | 246 |    These two constants, if defined, can be combined with the socket types and | 
 | 247 |    allow you to set some flags atomically (thus avoiding possible race | 
 | 248 |    conditions and the need for separate calls). | 
 | 249 |  | 
 | 250 |    .. seealso:: | 
 | 251 |  | 
 | 252 |       `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_ | 
 | 253 |       for a more thorough explanation. | 
 | 254 |  | 
 | 255 |    Availability: Linux >= 2.6.27. | 
 | 256 |  | 
 | 257 |    .. versionadded:: 3.2 | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 258 |  | 
 | 259 | .. data:: SO_* | 
 | 260 |           SOMAXCONN | 
 | 261 |           MSG_* | 
 | 262 |           SOL_* | 
| Nick Coghlan | 96fe56a | 2011-08-22 11:55:57 +1000 | [diff] [blame] | 263 |           SCM_* | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 264 |           IPPROTO_* | 
 | 265 |           IPPORT_* | 
 | 266 |           INADDR_* | 
 | 267 |           IP_* | 
 | 268 |           IPV6_* | 
 | 269 |           EAI_* | 
 | 270 |           AI_* | 
 | 271 |           NI_* | 
 | 272 |           TCP_* | 
 | 273 |  | 
 | 274 |    Many constants of these forms, documented in the Unix documentation on sockets | 
 | 275 |    and/or the IP protocol, are also defined in the socket module. They are | 
 | 276 |    generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt` | 
 | 277 |    methods of socket objects.  In most cases, only those symbols that are defined | 
 | 278 |    in the Unix header files are defined; for a few symbols, default values are | 
 | 279 |    provided. | 
 | 280 |  | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 281 | .. data:: AF_CAN | 
 | 282 |           PF_CAN | 
 | 283 |           SOL_CAN_* | 
 | 284 |           CAN_* | 
 | 285 |  | 
 | 286 |    Many constants of these forms, documented in the Linux documentation, are | 
 | 287 |    also defined in the socket module. | 
 | 288 |  | 
 | 289 |    Availability: Linux >= 2.6.25. | 
 | 290 |  | 
 | 291 |    .. versionadded:: 3.3 | 
 | 292 |  | 
| Charles-François Natali | 773e42d | 2013-02-05 19:42:01 +0100 | [diff] [blame] | 293 | .. data:: CAN_BCM | 
 | 294 |           CAN_BCM_* | 
 | 295 |  | 
 | 296 |    CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol. | 
 | 297 |    Broadcast manager constants, documented in the Linux documentation, are also | 
 | 298 |    defined in the socket module. | 
 | 299 |  | 
 | 300 |    Availability: Linux >= 2.6.25. | 
 | 301 |  | 
 | 302 |    .. versionadded:: 3.4 | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 303 |  | 
| Larry Hastings | a6cc551 | 2015-04-13 17:48:40 -0400 | [diff] [blame] | 304 | .. data:: CAN_RAW_FD_FRAMES | 
 | 305 |  | 
 | 306 |    Enables CAN FD support in a CAN_RAW socket. This is disabled by default. | 
 | 307 |    This allows your application to send both CAN and CAN FD frames; however, | 
 | 308 |    you one must accept both CAN and CAN FD frames when reading from the socket. | 
 | 309 |  | 
 | 310 |    This constant is documented in the Linux documentation. | 
 | 311 |  | 
 | 312 |    Availability: Linux >= 3.6. | 
 | 313 |  | 
 | 314 |    .. versionadded:: 3.5 | 
 | 315 |  | 
| Charles-François Natali | 10b8cf4 | 2011-11-10 19:21:37 +0100 | [diff] [blame] | 316 | .. data:: AF_RDS | 
 | 317 |           PF_RDS | 
 | 318 |           SOL_RDS | 
 | 319 |           RDS_* | 
 | 320 |  | 
 | 321 |    Many constants of these forms, documented in the Linux documentation, are | 
 | 322 |    also defined in the socket module. | 
 | 323 |  | 
 | 324 |    Availability: Linux >= 2.6.30. | 
 | 325 |  | 
 | 326 |    .. versionadded:: 3.3 | 
 | 327 |  | 
 | 328 |  | 
| Christian Heimes | faf2f63 | 2008-01-06 16:59:19 +0000 | [diff] [blame] | 329 | .. data:: SIO_* | 
 | 330 |           RCVALL_* | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 331 |  | 
| Christian Heimes | faf2f63 | 2008-01-06 16:59:19 +0000 | [diff] [blame] | 332 |    Constants for Windows' WSAIoctl(). The constants are used as arguments to the | 
| Serhiy Storchaka | bfdcd43 | 2013-10-13 23:09:14 +0300 | [diff] [blame] | 333 |    :meth:`~socket.socket.ioctl` method of socket objects. | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 334 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 335 |  | 
| Christian Heimes | 043d6f6 | 2008-01-07 17:19:16 +0000 | [diff] [blame] | 336 | .. data:: TIPC_* | 
 | 337 |  | 
 | 338 |    TIPC related constants, matching the ones exported by the C socket API. See | 
 | 339 |    the TIPC documentation for more information. | 
 | 340 |  | 
| Giampaolo Rodola' | 80e1c43 | 2013-05-21 21:02:04 +0200 | [diff] [blame] | 341 | .. data:: AF_LINK | 
 | 342 |  | 
 | 343 |   Availability: BSD, OSX. | 
 | 344 |  | 
 | 345 |   .. versionadded:: 3.4 | 
| Christian Heimes | 043d6f6 | 2008-01-07 17:19:16 +0000 | [diff] [blame] | 346 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 347 | .. data:: has_ipv6 | 
 | 348 |  | 
 | 349 |    This constant contains a boolean value which indicates if IPv6 is supported on | 
 | 350 |    this platform. | 
 | 351 |  | 
| Martin Panter | ea7266d | 2015-09-11 23:14:57 +0000 | [diff] [blame] | 352 | .. data:: BDADDR_ANY | 
 | 353 |           BDADDR_LOCAL | 
 | 354 |  | 
 | 355 |    These are string constants containing Bluetooth addresses with special | 
 | 356 |    meanings. For example, :const:`BDADDR_ANY` can be used to indicate | 
 | 357 |    any address when specifying the binding socket with | 
 | 358 |    :const:`BTPROTO_RFCOMM`. | 
 | 359 |  | 
 | 360 | .. data:: HCI_FILTER | 
 | 361 |           HCI_TIME_STAMP | 
 | 362 |           HCI_DATA_DIR | 
 | 363 |  | 
 | 364 |    For use with :const:`BTPROTO_HCI`. :const:`HCI_FILTER` is not | 
 | 365 |    available for NetBSD or DragonFlyBSD. :const:`HCI_TIME_STAMP` and | 
 | 366 |    :const:`HCI_DATA_DIR` are not available for FreeBSD, NetBSD, or | 
 | 367 |    DragonFlyBSD. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 368 |  | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 369 | Functions | 
 | 370 | ^^^^^^^^^ | 
 | 371 |  | 
 | 372 | Creating sockets | 
 | 373 | '''''''''''''''' | 
 | 374 |  | 
 | 375 | The following functions all create :ref:`socket objects <socket-objects>`. | 
 | 376 |  | 
 | 377 |  | 
| Antoine Pitrou | f9c5494 | 2013-12-04 21:15:24 +0100 | [diff] [blame] | 378 | .. function:: socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 379 |  | 
 | 380 |    Create a new socket using the given address family, socket type and protocol | 
 | 381 |    number.  The address family should be :const:`AF_INET` (the default), | 
 | 382 |    :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The | 
 | 383 |    socket type should be :const:`SOCK_STREAM` (the default), | 
 | 384 |    :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_`` | 
| Antoine Pitrou | f9c5494 | 2013-12-04 21:15:24 +0100 | [diff] [blame] | 385 |    constants. The protocol number is usually zero and may be omitted or in the | 
 | 386 |    case where the address family is :const:`AF_CAN` the protocol should be one | 
| Berker Peksag | 24a6109 | 2015-10-08 06:34:01 +0300 | [diff] [blame] | 387 |    of :const:`CAN_RAW` or :const:`CAN_BCM`.  If *fileno* is specified, the other | 
 | 388 |    arguments are ignored, causing the socket with the specified file descriptor | 
 | 389 |    to return.  Unlike :func:`socket.fromfd`, *fileno* will return the same | 
 | 390 |    socket and not a duplicate. This may help close a detached socket using | 
 | 391 |    :meth:`socket.close()`. | 
| Antoine Pitrou | f9c5494 | 2013-12-04 21:15:24 +0100 | [diff] [blame] | 392 |  | 
 | 393 |    The newly created socket is :ref:`non-inheritable <fd_inheritance>`. | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 394 |  | 
 | 395 |    .. versionchanged:: 3.3 | 
 | 396 |       The AF_CAN family was added. | 
 | 397 |       The AF_RDS family was added. | 
 | 398 |  | 
| Antoine Pitrou | f9c5494 | 2013-12-04 21:15:24 +0100 | [diff] [blame] | 399 |    .. versionchanged:: 3.4 | 
 | 400 |        The CAN_BCM protocol was added. | 
 | 401 |  | 
 | 402 |    .. versionchanged:: 3.4 | 
 | 403 |       The returned socket is now non-inheritable. | 
 | 404 |  | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 405 |  | 
 | 406 | .. function:: socketpair([family[, type[, proto]]]) | 
 | 407 |  | 
 | 408 |    Build a pair of connected socket objects using the given address family, socket | 
 | 409 |    type, and protocol number.  Address family, socket type, and protocol number are | 
 | 410 |    as for the :func:`.socket` function above. The default family is :const:`AF_UNIX` | 
 | 411 |    if defined on the platform; otherwise, the default is :const:`AF_INET`. | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 412 |  | 
| Antoine Pitrou | f9c5494 | 2013-12-04 21:15:24 +0100 | [diff] [blame] | 413 |    The newly created sockets are :ref:`non-inheritable <fd_inheritance>`. | 
 | 414 |  | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 415 |    .. versionchanged:: 3.2 | 
 | 416 |       The returned socket objects now support the whole socket API, rather | 
 | 417 |       than a subset. | 
 | 418 |  | 
| Antoine Pitrou | f9c5494 | 2013-12-04 21:15:24 +0100 | [diff] [blame] | 419 |    .. versionchanged:: 3.4 | 
 | 420 |       The returned sockets are now non-inheritable. | 
 | 421 |  | 
| Charles-François Natali | 98c745a | 2014-10-14 21:22:44 +0100 | [diff] [blame] | 422 |    .. versionchanged:: 3.5 | 
 | 423 |       Windows support added. | 
 | 424 |  | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 425 |  | 
| Gregory P. Smith | b406637 | 2010-01-03 03:28:29 +0000 | [diff] [blame] | 426 | .. function:: create_connection(address[, timeout[, source_address]]) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 427 |  | 
| Antoine Pitrou | 889a510 | 2012-01-12 08:06:19 +0100 | [diff] [blame] | 428 |    Connect to a TCP service listening on the Internet *address* (a 2-tuple | 
 | 429 |    ``(host, port)``), and return the socket object.  This is a higher-level | 
 | 430 |    function than :meth:`socket.connect`: if *host* is a non-numeric hostname, | 
 | 431 |    it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`, | 
 | 432 |    and then try to connect to all possible addresses in turn until a | 
 | 433 |    connection succeeds.  This makes it easy to write clients that are | 
 | 434 |    compatible to both IPv4 and IPv6. | 
 | 435 |  | 
 | 436 |    Passing the optional *timeout* parameter will set the timeout on the | 
 | 437 |    socket instance before attempting to connect.  If no *timeout* is | 
 | 438 |    supplied, the global default timeout setting returned by | 
| Georg Brandl | f78e02b | 2008-06-10 17:40:04 +0000 | [diff] [blame] | 439 |    :func:`getdefaulttimeout` is used. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 440 |  | 
| Gregory P. Smith | b406637 | 2010-01-03 03:28:29 +0000 | [diff] [blame] | 441 |    If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the | 
 | 442 |    socket to bind to as its source address before connecting.  If host or port | 
 | 443 |    are '' or 0 respectively the OS default behavior will be used. | 
 | 444 |  | 
 | 445 |    .. versionchanged:: 3.2 | 
 | 446 |       *source_address* was added. | 
 | 447 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 448 |  | 
| Antoine Pitrou | f9c5494 | 2013-12-04 21:15:24 +0100 | [diff] [blame] | 449 | .. function:: fromfd(fd, family, type, proto=0) | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 450 |  | 
 | 451 |    Duplicate the file descriptor *fd* (an integer as returned by a file object's | 
 | 452 |    :meth:`fileno` method) and build a socket object from the result.  Address | 
 | 453 |    family, socket type and protocol number are as for the :func:`.socket` function | 
 | 454 |    above. The file descriptor should refer to a socket, but this is not checked --- | 
 | 455 |    subsequent operations on the object may fail if the file descriptor is invalid. | 
 | 456 |    This function is rarely needed, but can be used to get or set socket options on | 
 | 457 |    a socket passed to a program as standard input or output (such as a server | 
 | 458 |    started by the Unix inet daemon).  The socket is assumed to be in blocking mode. | 
 | 459 |  | 
| Antoine Pitrou | f9c5494 | 2013-12-04 21:15:24 +0100 | [diff] [blame] | 460 |    The newly created socket is :ref:`non-inheritable <fd_inheritance>`. | 
 | 461 |  | 
 | 462 |    .. versionchanged:: 3.4 | 
 | 463 |       The returned socket is now non-inheritable. | 
 | 464 |  | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 465 |  | 
 | 466 | .. function:: fromshare(data) | 
 | 467 |  | 
 | 468 |    Instantiate a socket from data obtained from the :meth:`socket.share` | 
 | 469 |    method.  The socket is assumed to be in blocking mode. | 
 | 470 |  | 
 | 471 |    Availability: Windows. | 
 | 472 |  | 
 | 473 |    .. versionadded:: 3.3 | 
 | 474 |  | 
 | 475 |  | 
 | 476 | .. data:: SocketType | 
 | 477 |  | 
 | 478 |    This is a Python type object that represents the socket object type. It is the | 
 | 479 |    same as ``type(socket(...))``. | 
 | 480 |  | 
 | 481 |  | 
 | 482 | Other functions | 
 | 483 | ''''''''''''''' | 
 | 484 |  | 
 | 485 | The :mod:`socket` module also offers various network-related services: | 
 | 486 |  | 
 | 487 |  | 
| Giampaolo Rodolà | ccfb91c | 2010-08-17 15:30:23 +0000 | [diff] [blame] | 488 | .. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 489 |  | 
| Antoine Pitrou | 9103597 | 2010-05-31 17:04:40 +0000 | [diff] [blame] | 490 |    Translate the *host*/*port* argument into a sequence of 5-tuples that contain | 
 | 491 |    all the necessary arguments for creating a socket connected to that service. | 
 | 492 |    *host* is a domain name, a string representation of an IPv4/v6 address | 
 | 493 |    or ``None``. *port* is a string service name such as ``'http'``, a numeric | 
 | 494 |    port number or ``None``.  By passing ``None`` as the value of *host* | 
 | 495 |    and *port*, you can pass ``NULL`` to the underlying C API. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 496 |  | 
| Giampaolo Rodolà | ccfb91c | 2010-08-17 15:30:23 +0000 | [diff] [blame] | 497 |    The *family*, *type* and *proto* arguments can be optionally specified | 
| Antoine Pitrou | 9103597 | 2010-05-31 17:04:40 +0000 | [diff] [blame] | 498 |    in order to narrow the list of addresses returned.  Passing zero as a | 
 | 499 |    value for each of these arguments selects the full range of results. | 
 | 500 |    The *flags* argument can be one or several of the ``AI_*`` constants, | 
 | 501 |    and will influence how results are computed and returned. | 
 | 502 |    For example, :const:`AI_NUMERICHOST` will disable domain name resolution | 
 | 503 |    and will raise an error if *host* is a domain name. | 
 | 504 |  | 
 | 505 |    The function returns a list of 5-tuples with the following structure: | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 506 |  | 
| Giampaolo Rodolà | ccfb91c | 2010-08-17 15:30:23 +0000 | [diff] [blame] | 507 |    ``(family, type, proto, canonname, sockaddr)`` | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 508 |  | 
| Giampaolo Rodolà | ccfb91c | 2010-08-17 15:30:23 +0000 | [diff] [blame] | 509 |    In these tuples, *family*, *type*, *proto* are all integers and are | 
| Ezio Melotti | c048d98 | 2013-04-17 04:10:26 +0300 | [diff] [blame] | 510 |    meant to be passed to the :func:`.socket` function.  *canonname* will be | 
| Antoine Pitrou | 9103597 | 2010-05-31 17:04:40 +0000 | [diff] [blame] | 511 |    a string representing the canonical name of the *host* if | 
 | 512 |    :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname* | 
 | 513 |    will be empty.  *sockaddr* is a tuple describing a socket address, whose | 
 | 514 |    format depends on the returned *family* (a ``(address, port)`` 2-tuple for | 
 | 515 |    :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for | 
 | 516 |    :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect` | 
 | 517 |    method. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 518 |  | 
| Antoine Pitrou | 9103597 | 2010-05-31 17:04:40 +0000 | [diff] [blame] | 519 |    The following example fetches address information for a hypothetical TCP | 
| Ned Deily | 11cf4f6 | 2015-06-01 21:19:30 -0700 | [diff] [blame] | 520 |    connection to ``example.org`` on port 80 (results may differ on your | 
| Antoine Pitrou | 9103597 | 2010-05-31 17:04:40 +0000 | [diff] [blame] | 521 |    system if IPv6 isn't enabled):: | 
 | 522 |  | 
| Ned Deily | 11cf4f6 | 2015-06-01 21:19:30 -0700 | [diff] [blame] | 523 |       >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP) | 
| Ned Deily | 1b79e2d | 2015-06-01 18:52:48 -0700 | [diff] [blame] | 524 |       [(<AddressFamily.AF_INET6: 10>, <SocketType.SOCK_STREAM: 1>, | 
| Ned Deily | 11cf4f6 | 2015-06-01 21:19:30 -0700 | [diff] [blame] | 525 |        6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), | 
| Ned Deily | 1b79e2d | 2015-06-01 18:52:48 -0700 | [diff] [blame] | 526 |        (<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>, | 
| Ned Deily | 11cf4f6 | 2015-06-01 21:19:30 -0700 | [diff] [blame] | 527 |        6, '', ('93.184.216.34', 80))] | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 528 |  | 
| Giampaolo Rodolà | ccfb91c | 2010-08-17 15:30:23 +0000 | [diff] [blame] | 529 |    .. versionchanged:: 3.2 | 
| Andrew Kuchling | 46ff4ee | 2014-02-15 16:39:37 -0500 | [diff] [blame] | 530 |       parameters can now be passed using keyword arguments. | 
| Giampaolo Rodolà | ccfb91c | 2010-08-17 15:30:23 +0000 | [diff] [blame] | 531 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 532 | .. function:: getfqdn([name]) | 
 | 533 |  | 
 | 534 |    Return a fully qualified domain name for *name*. If *name* is omitted or empty, | 
 | 535 |    it is interpreted as the local host.  To find the fully qualified name, the | 
| Benjamin Peterson | e9bbc8b | 2008-09-28 02:06:32 +0000 | [diff] [blame] | 536 |    hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 537 |    host, if available.  The first name which includes a period is selected.  In | 
 | 538 |    case no fully qualified domain name is available, the hostname as returned by | 
 | 539 |    :func:`gethostname` is returned. | 
 | 540 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 541 |  | 
 | 542 | .. function:: gethostbyname(hostname) | 
 | 543 |  | 
 | 544 |    Translate a host name to IPv4 address format.  The IPv4 address is returned as a | 
 | 545 |    string, such as  ``'100.50.200.5'``.  If the host name is an IPv4 address itself | 
 | 546 |    it is returned unchanged.  See :func:`gethostbyname_ex` for a more complete | 
 | 547 |    interface. :func:`gethostbyname` does not support IPv6 name resolution, and | 
 | 548 |    :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support. | 
 | 549 |  | 
 | 550 |  | 
 | 551 | .. function:: gethostbyname_ex(hostname) | 
 | 552 |  | 
 | 553 |    Translate a host name to IPv4 address format, extended interface. Return a | 
 | 554 |    triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary | 
 | 555 |    host name responding to the given *ip_address*, *aliaslist* is a (possibly | 
 | 556 |    empty) list of alternative host names for the same address, and *ipaddrlist* is | 
 | 557 |    a list of IPv4 addresses for the same interface on the same host (often but not | 
 | 558 |    always a single address). :func:`gethostbyname_ex` does not support IPv6 name | 
 | 559 |    resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual | 
 | 560 |    stack support. | 
 | 561 |  | 
 | 562 |  | 
 | 563 | .. function:: gethostname() | 
 | 564 |  | 
 | 565 |    Return a string containing the hostname of the machine where  the Python | 
| Benjamin Peterson | 65676e4 | 2008-11-05 21:42:45 +0000 | [diff] [blame] | 566 |    interpreter is currently executing. | 
 | 567 |  | 
| Benjamin Peterson | 65676e4 | 2008-11-05 21:42:45 +0000 | [diff] [blame] | 568 |    Note: :func:`gethostname` doesn't always return the fully qualified domain | 
| Berker Peksag | 2a8baed | 2015-05-19 01:31:00 +0300 | [diff] [blame] | 569 |    name; use :func:`getfqdn` for that. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 570 |  | 
 | 571 |  | 
 | 572 | .. function:: gethostbyaddr(ip_address) | 
 | 573 |  | 
 | 574 |    Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the | 
 | 575 |    primary host name responding to the given *ip_address*, *aliaslist* is a | 
 | 576 |    (possibly empty) list of alternative host names for the same address, and | 
 | 577 |    *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same | 
 | 578 |    host (most likely containing only a single address). To find the fully qualified | 
 | 579 |    domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports | 
 | 580 |    both IPv4 and IPv6. | 
 | 581 |  | 
 | 582 |  | 
 | 583 | .. function:: getnameinfo(sockaddr, flags) | 
 | 584 |  | 
 | 585 |    Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending | 
 | 586 |    on the settings of *flags*, the result can contain a fully-qualified domain name | 
 | 587 |    or numeric address representation in *host*.  Similarly, *port* can contain a | 
 | 588 |    string port name or a numeric port number. | 
 | 589 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 590 |  | 
 | 591 | .. function:: getprotobyname(protocolname) | 
 | 592 |  | 
 | 593 |    Translate an Internet protocol name (for example, ``'icmp'``) to a constant | 
| Ezio Melotti | c048d98 | 2013-04-17 04:10:26 +0300 | [diff] [blame] | 594 |    suitable for passing as the (optional) third argument to the :func:`.socket` | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 595 |    function.  This is usually only needed for sockets opened in "raw" mode | 
 | 596 |    (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen | 
 | 597 |    automatically if the protocol is omitted or zero. | 
 | 598 |  | 
 | 599 |  | 
 | 600 | .. function:: getservbyname(servicename[, protocolname]) | 
 | 601 |  | 
 | 602 |    Translate an Internet service name and protocol name to a port number for that | 
 | 603 |    service.  The optional protocol name, if given, should be ``'tcp'`` or | 
 | 604 |    ``'udp'``, otherwise any protocol will match. | 
 | 605 |  | 
 | 606 |  | 
 | 607 | .. function:: getservbyport(port[, protocolname]) | 
 | 608 |  | 
 | 609 |    Translate an Internet port number and protocol name to a service name for that | 
 | 610 |    service.  The optional protocol name, if given, should be ``'tcp'`` or | 
 | 611 |    ``'udp'``, otherwise any protocol will match. | 
 | 612 |  | 
 | 613 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 614 | .. function:: ntohl(x) | 
 | 615 |  | 
 | 616 |    Convert 32-bit positive integers from network to host byte order.  On machines | 
 | 617 |    where the host byte order is the same as network byte order, this is a no-op; | 
 | 618 |    otherwise, it performs a 4-byte swap operation. | 
 | 619 |  | 
 | 620 |  | 
 | 621 | .. function:: ntohs(x) | 
 | 622 |  | 
 | 623 |    Convert 16-bit positive integers from network to host byte order.  On machines | 
 | 624 |    where the host byte order is the same as network byte order, this is a no-op; | 
 | 625 |    otherwise, it performs a 2-byte swap operation. | 
 | 626 |  | 
 | 627 |  | 
 | 628 | .. function:: htonl(x) | 
 | 629 |  | 
 | 630 |    Convert 32-bit positive integers from host to network byte order.  On machines | 
 | 631 |    where the host byte order is the same as network byte order, this is a no-op; | 
 | 632 |    otherwise, it performs a 4-byte swap operation. | 
 | 633 |  | 
 | 634 |  | 
 | 635 | .. function:: htons(x) | 
 | 636 |  | 
 | 637 |    Convert 16-bit positive integers from host to network byte order.  On machines | 
 | 638 |    where the host byte order is the same as network byte order, this is a no-op; | 
 | 639 |    otherwise, it performs a 2-byte swap operation. | 
 | 640 |  | 
 | 641 |  | 
 | 642 | .. function:: inet_aton(ip_string) | 
 | 643 |  | 
 | 644 |    Convert an IPv4 address from dotted-quad string format (for example, | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 645 |    '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 646 |    length.  This is useful when conversing with a program that uses the standard C | 
| Georg Brandl | 60203b4 | 2010-10-06 10:11:56 +0000 | [diff] [blame] | 647 |    library and needs objects of type :c:type:`struct in_addr`, which is the C type | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 648 |    for the 32-bit packed binary this function returns. | 
 | 649 |  | 
| Georg Brandl | f5123ef | 2009-06-04 10:28:36 +0000 | [diff] [blame] | 650 |    :func:`inet_aton` also accepts strings with less than three dots; see the | 
 | 651 |    Unix manual page :manpage:`inet(3)` for details. | 
 | 652 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 653 |    If the IPv4 address string passed to this function is invalid, | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 654 |    :exc:`OSError` will be raised. Note that exactly what is valid depends on | 
| Georg Brandl | 60203b4 | 2010-10-06 10:11:56 +0000 | [diff] [blame] | 655 |    the underlying C implementation of :c:func:`inet_aton`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 656 |  | 
| Georg Brandl | 5f25972 | 2009-05-04 20:50:30 +0000 | [diff] [blame] | 657 |    :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 658 |    instead for IPv4/v6 dual stack support. | 
 | 659 |  | 
 | 660 |  | 
 | 661 | .. function:: inet_ntoa(packed_ip) | 
 | 662 |  | 
| Serhiy Storchaka | 8490f5a | 2015-03-20 09:00:36 +0200 | [diff] [blame] | 663 |    Convert a 32-bit packed IPv4 address (a :term:`bytes-like object` four | 
 | 664 |    bytes in length) to its standard dotted-quad string representation (for example, | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 665 |    '123.45.67.89').  This is useful when conversing with a program that uses the | 
| Georg Brandl | 60203b4 | 2010-10-06 10:11:56 +0000 | [diff] [blame] | 666 |    standard C library and needs objects of type :c:type:`struct in_addr`, which | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 667 |    is the C type for the 32-bit packed binary data this function takes as an | 
 | 668 |    argument. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 669 |  | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 670 |    If the byte sequence passed to this function is not exactly 4 bytes in | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 671 |    length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not | 
| Georg Brandl | 5f25972 | 2009-05-04 20:50:30 +0000 | [diff] [blame] | 672 |    support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 673 |    stack support. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 674 |  | 
| Georg Brandl | 8c16cb9 | 2016-02-25 20:17:45 +0100 | [diff] [blame] | 675 |    .. versionchanged:: 3.5 | 
| Serhiy Storchaka | 8490f5a | 2015-03-20 09:00:36 +0200 | [diff] [blame] | 676 |       Writable :term:`bytes-like object` is now accepted. | 
 | 677 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 678 |  | 
 | 679 | .. function:: inet_pton(address_family, ip_string) | 
 | 680 |  | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 681 |    Convert an IP address from its family-specific string format to a packed, | 
 | 682 |    binary format. :func:`inet_pton` is useful when a library or network protocol | 
| Georg Brandl | 60203b4 | 2010-10-06 10:11:56 +0000 | [diff] [blame] | 683 |    calls for an object of type :c:type:`struct in_addr` (similar to | 
 | 684 |    :func:`inet_aton`) or :c:type:`struct in6_addr`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 685 |  | 
 | 686 |    Supported values for *address_family* are currently :const:`AF_INET` and | 
 | 687 |    :const:`AF_INET6`. If the IP address string *ip_string* is invalid, | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 688 |    :exc:`OSError` will be raised. Note that exactly what is valid depends on | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 689 |    both the value of *address_family* and the underlying implementation of | 
| Georg Brandl | 60203b4 | 2010-10-06 10:11:56 +0000 | [diff] [blame] | 690 |    :c:func:`inet_pton`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 691 |  | 
| Atsuo Ishimoto | da0fc14 | 2012-07-16 15:16:54 +0900 | [diff] [blame] | 692 |    Availability: Unix (maybe not all platforms), Windows. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 693 |  | 
| R David Murray | 6c50101 | 2014-03-07 21:22:39 -0500 | [diff] [blame] | 694 |    .. versionchanged:: 3.4 | 
 | 695 |       Windows support added | 
 | 696 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 697 |  | 
 | 698 | .. function:: inet_ntop(address_family, packed_ip) | 
 | 699 |  | 
| Serhiy Storchaka | 8490f5a | 2015-03-20 09:00:36 +0200 | [diff] [blame] | 700 |    Convert a packed IP address (a :term:`bytes-like object` of some number of | 
 | 701 |    bytes) to its standard, family-specific string representation (for | 
 | 702 |    example, ``'7.10.0.5'`` or ``'5aef:2b::8'``). | 
 | 703 |    :func:`inet_ntop` is useful when a library or network protocol returns an | 
 | 704 |    object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`) or | 
 | 705 |    :c:type:`struct in6_addr`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 706 |  | 
 | 707 |    Supported values for *address_family* are currently :const:`AF_INET` and | 
| Serhiy Storchaka | 8490f5a | 2015-03-20 09:00:36 +0200 | [diff] [blame] | 708 |    :const:`AF_INET6`. If the bytes object *packed_ip* is not the correct | 
 | 709 |    length for the specified address family, :exc:`ValueError` will be raised. | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 710 |    :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 711 |  | 
| Atsuo Ishimoto | da0fc14 | 2012-07-16 15:16:54 +0900 | [diff] [blame] | 712 |    Availability: Unix (maybe not all platforms), Windows. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 713 |  | 
| R David Murray | 6c50101 | 2014-03-07 21:22:39 -0500 | [diff] [blame] | 714 |    .. versionchanged:: 3.4 | 
 | 715 |       Windows support added | 
 | 716 |  | 
| Georg Brandl | 8c16cb9 | 2016-02-25 20:17:45 +0100 | [diff] [blame] | 717 |    .. versionchanged:: 3.5 | 
| Serhiy Storchaka | 8490f5a | 2015-03-20 09:00:36 +0200 | [diff] [blame] | 718 |       Writable :term:`bytes-like object` is now accepted. | 
 | 719 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 720 |  | 
| Nick Coghlan | 96fe56a | 2011-08-22 11:55:57 +1000 | [diff] [blame] | 721 | .. | 
 | 722 |    XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any | 
 | 723 |    non-Unix platforms?  The old (obsolete?) 4.2BSD form of the | 
 | 724 |    interface, in which struct msghdr has no msg_control or | 
 | 725 |    msg_controllen members, is not currently supported. | 
 | 726 |  | 
 | 727 | .. function:: CMSG_LEN(length) | 
 | 728 |  | 
 | 729 |    Return the total length, without trailing padding, of an ancillary | 
 | 730 |    data item with associated data of the given *length*.  This value | 
 | 731 |    can often be used as the buffer size for :meth:`~socket.recvmsg` to | 
 | 732 |    receive a single item of ancillary data, but :rfc:`3542` requires | 
 | 733 |    portable applications to use :func:`CMSG_SPACE` and thus include | 
 | 734 |    space for padding, even when the item will be the last in the | 
 | 735 |    buffer.  Raises :exc:`OverflowError` if *length* is outside the | 
 | 736 |    permissible range of values. | 
 | 737 |  | 
 | 738 |    Availability: most Unix platforms, possibly others. | 
 | 739 |  | 
 | 740 |    .. versionadded:: 3.3 | 
 | 741 |  | 
 | 742 |  | 
 | 743 | .. function:: CMSG_SPACE(length) | 
 | 744 |  | 
 | 745 |    Return the buffer size needed for :meth:`~socket.recvmsg` to | 
 | 746 |    receive an ancillary data item with associated data of the given | 
 | 747 |    *length*, along with any trailing padding.  The buffer space needed | 
 | 748 |    to receive multiple items is the sum of the :func:`CMSG_SPACE` | 
 | 749 |    values for their associated data lengths.  Raises | 
 | 750 |    :exc:`OverflowError` if *length* is outside the permissible range | 
 | 751 |    of values. | 
 | 752 |  | 
 | 753 |    Note that some systems might support ancillary data without | 
 | 754 |    providing this function.  Also note that setting the buffer size | 
 | 755 |    using the results of this function may not precisely limit the | 
 | 756 |    amount of ancillary data that can be received, since additional | 
 | 757 |    data may be able to fit into the padding area. | 
 | 758 |  | 
 | 759 |    Availability: most Unix platforms, possibly others. | 
 | 760 |  | 
 | 761 |    .. versionadded:: 3.3 | 
 | 762 |  | 
 | 763 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 764 | .. function:: getdefaulttimeout() | 
 | 765 |  | 
| Ezio Melotti | 388c945 | 2011-08-14 08:28:57 +0300 | [diff] [blame] | 766 |    Return the default timeout in seconds (float) for new socket objects. A value | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 767 |    of ``None`` indicates that new socket objects have no timeout. When the socket | 
 | 768 |    module is first imported, the default is ``None``. | 
 | 769 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 770 |  | 
 | 771 | .. function:: setdefaulttimeout(timeout) | 
 | 772 |  | 
| Ezio Melotti | 388c945 | 2011-08-14 08:28:57 +0300 | [diff] [blame] | 773 |    Set the default timeout in seconds (float) for new socket objects.  When | 
| Antoine Pitrou | dfad7e3 | 2011-01-05 21:17:36 +0000 | [diff] [blame] | 774 |    the socket module is first imported, the default is ``None``.  See | 
 | 775 |    :meth:`~socket.settimeout` for possible values and their respective | 
 | 776 |    meanings. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 777 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 778 |  | 
| Antoine Pitrou | 061cfb5 | 2011-02-28 22:25:22 +0000 | [diff] [blame] | 779 | .. function:: sethostname(name) | 
 | 780 |  | 
| Serhiy Storchaka | d65c949 | 2015-11-02 14:10:23 +0200 | [diff] [blame] | 781 |    Set the machine's hostname to *name*.  This will raise an | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 782 |    :exc:`OSError` if you don't have enough rights. | 
| Antoine Pitrou | 061cfb5 | 2011-02-28 22:25:22 +0000 | [diff] [blame] | 783 |  | 
 | 784 |    Availability: Unix. | 
 | 785 |  | 
 | 786 |    .. versionadded:: 3.3 | 
 | 787 |  | 
 | 788 |  | 
| Gregory P. Smith | 5ed2e77 | 2011-05-15 00:26:45 -0700 | [diff] [blame] | 789 | .. function:: if_nameindex() | 
 | 790 |  | 
| Gregory P. Smith | b6471db | 2011-05-22 22:47:55 -0700 | [diff] [blame] | 791 |    Return a list of network interface information | 
 | 792 |    (index int, name string) tuples. | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 793 |    :exc:`OSError` if the system call fails. | 
| Gregory P. Smith | 5ed2e77 | 2011-05-15 00:26:45 -0700 | [diff] [blame] | 794 |  | 
 | 795 |    Availability: Unix. | 
 | 796 |  | 
 | 797 |    .. versionadded:: 3.3 | 
 | 798 |  | 
 | 799 |  | 
 | 800 | .. function:: if_nametoindex(if_name) | 
 | 801 |  | 
| Gregory P. Smith | b6471db | 2011-05-22 22:47:55 -0700 | [diff] [blame] | 802 |    Return a network interface index number corresponding to an | 
 | 803 |    interface name. | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 804 |    :exc:`OSError` if no interface with the given name exists. | 
| Gregory P. Smith | 5ed2e77 | 2011-05-15 00:26:45 -0700 | [diff] [blame] | 805 |  | 
 | 806 |    Availability: Unix. | 
 | 807 |  | 
 | 808 |    .. versionadded:: 3.3 | 
 | 809 |  | 
 | 810 |  | 
 | 811 | .. function:: if_indextoname(if_index) | 
 | 812 |  | 
| Serhiy Storchaka | d65c949 | 2015-11-02 14:10:23 +0200 | [diff] [blame] | 813 |    Return a network interface name corresponding to an | 
| Gregory P. Smith | b6471db | 2011-05-22 22:47:55 -0700 | [diff] [blame] | 814 |    interface index number. | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 815 |    :exc:`OSError` if no interface with the given index exists. | 
| Gregory P. Smith | 5ed2e77 | 2011-05-15 00:26:45 -0700 | [diff] [blame] | 816 |  | 
 | 817 |    Availability: Unix. | 
 | 818 |  | 
 | 819 |    .. versionadded:: 3.3 | 
 | 820 |  | 
 | 821 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 822 | .. _socket-objects: | 
 | 823 |  | 
 | 824 | Socket Objects | 
 | 825 | -------------- | 
 | 826 |  | 
| Antoine Pitrou | e3658a7 | 2013-12-04 21:02:42 +0100 | [diff] [blame] | 827 | Socket objects have the following methods.  Except for | 
 | 828 | :meth:`~socket.makefile`, these correspond to Unix system calls applicable | 
 | 829 | to sockets. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 830 |  | 
| Martin Panter | e37fc18 | 2016-04-24 04:24:36 +0000 | [diff] [blame] | 831 | .. versionchanged:: 3.2 | 
 | 832 |    Support for the :term:`context manager` protocol was added.  Exiting the | 
 | 833 |    context manager is equivalent to calling :meth:`~socket.close`. | 
 | 834 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 835 |  | 
 | 836 | .. method:: socket.accept() | 
 | 837 |  | 
 | 838 |    Accept a connection. The socket must be bound to an address and listening for | 
 | 839 |    connections. The return value is a pair ``(conn, address)`` where *conn* is a | 
 | 840 |    *new* socket object usable to send and receive data on the connection, and | 
 | 841 |    *address* is the address bound to the socket on the other end of the connection. | 
 | 842 |  | 
| Victor Stinner | daf4555 | 2013-08-28 00:53:59 +0200 | [diff] [blame] | 843 |    The newly created socket is :ref:`non-inheritable <fd_inheritance>`. | 
 | 844 |  | 
 | 845 |    .. versionchanged:: 3.4 | 
 | 846 |       The socket is now non-inheritable. | 
 | 847 |  | 
| Victor Stinner | 708d9ba | 2015-04-02 11:49:42 +0200 | [diff] [blame] | 848 |    .. versionchanged:: 3.5 | 
 | 849 |       If the system call is interrupted and the signal handler does not raise | 
 | 850 |       an exception, the method now retries the system call instead of raising | 
 | 851 |       an :exc:`InterruptedError` exception (see :pep:`475` for the rationale). | 
 | 852 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 853 |  | 
 | 854 | .. method:: socket.bind(address) | 
 | 855 |  | 
 | 856 |    Bind the socket to *address*.  The socket must not already be bound. (The format | 
 | 857 |    of *address* depends on the address family --- see above.) | 
 | 858 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 859 |  | 
 | 860 | .. method:: socket.close() | 
 | 861 |  | 
| Antoine Pitrou | e3658a7 | 2013-12-04 21:02:42 +0100 | [diff] [blame] | 862 |    Mark the socket closed.  The underlying system resource (e.g. a file | 
 | 863 |    descriptor) is also closed when all file objects from :meth:`makefile()` | 
 | 864 |    are closed.  Once that happens, all future operations on the socket | 
 | 865 |    object will fail. The remote end will receive no more data (after | 
 | 866 |    queued data is flushed). | 
 | 867 |  | 
 | 868 |    Sockets are automatically closed when they are garbage-collected, but | 
 | 869 |    it is recommended to :meth:`close` them explicitly, or to use a | 
 | 870 |    :keyword:`with` statement around them. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 871 |  | 
| Martin Panter | 50ab1a3 | 2016-04-11 00:38:12 +0000 | [diff] [blame] | 872 |    .. versionchanged:: 3.6 | 
 | 873 |       :exc:`OSError` is now raised if an error occurs when the underlying | 
 | 874 |       :c:func:`close` call is made. | 
 | 875 |  | 
| Antoine Pitrou | 4a67a46 | 2011-01-02 22:06:53 +0000 | [diff] [blame] | 876 |    .. note:: | 
| Éric Araujo | fa5e6e4 | 2014-03-12 19:51:00 -0400 | [diff] [blame] | 877 |  | 
| Antoine Pitrou | 4a67a46 | 2011-01-02 22:06:53 +0000 | [diff] [blame] | 878 |       :meth:`close()` releases the resource associated with a connection but | 
 | 879 |       does not necessarily close the connection immediately.  If you want | 
 | 880 |       to close the connection in a timely fashion, call :meth:`shutdown()` | 
 | 881 |       before :meth:`close()`. | 
 | 882 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 883 |  | 
 | 884 | .. method:: socket.connect(address) | 
 | 885 |  | 
 | 886 |    Connect to a remote socket at *address*. (The format of *address* depends on the | 
 | 887 |    address family --- see above.) | 
 | 888 |  | 
| Victor Stinner | 81c41db | 2015-04-02 11:50:57 +0200 | [diff] [blame] | 889 |    If the connection is interrupted by a signal, the method waits until the | 
 | 890 |    connection completes, or raise a :exc:`socket.timeout` on timeout, if the | 
 | 891 |    signal handler doesn't raise an exception and the socket is blocking or has | 
 | 892 |    a timeout. For non-blocking sockets, the method raises an | 
 | 893 |    :exc:`InterruptedError` exception if the connection is interrupted by a | 
 | 894 |    signal (or the exception raised by the signal handler). | 
 | 895 |  | 
 | 896 |    .. versionchanged:: 3.5 | 
 | 897 |       The method now waits until the connection completes instead of raising an | 
 | 898 |       :exc:`InterruptedError` exception if the connection is interrupted by a | 
 | 899 |       signal, the signal handler doesn't raise an exception and the socket is | 
 | 900 |       blocking or has a timeout (see the :pep:`475` for the rationale). | 
 | 901 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 902 |  | 
 | 903 | .. method:: socket.connect_ex(address) | 
 | 904 |  | 
 | 905 |    Like ``connect(address)``, but return an error indicator instead of raising an | 
| Georg Brandl | 60203b4 | 2010-10-06 10:11:56 +0000 | [diff] [blame] | 906 |    exception for errors returned by the C-level :c:func:`connect` call (other | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 907 |    problems, such as "host not found," can still raise exceptions).  The error | 
 | 908 |    indicator is ``0`` if the operation succeeded, otherwise the value of the | 
| Georg Brandl | 60203b4 | 2010-10-06 10:11:56 +0000 | [diff] [blame] | 909 |    :c:data:`errno` variable.  This is useful to support, for example, asynchronous | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 910 |    connects. | 
 | 911 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 912 |  | 
| Antoine Pitrou | 6e451df | 2010-08-09 20:39:54 +0000 | [diff] [blame] | 913 | .. method:: socket.detach() | 
 | 914 |  | 
 | 915 |    Put the socket object into closed state without actually closing the | 
 | 916 |    underlying file descriptor.  The file descriptor is returned, and can | 
 | 917 |    be reused for other purposes. | 
 | 918 |  | 
 | 919 |    .. versionadded:: 3.2 | 
 | 920 |  | 
 | 921 |  | 
| Victor Stinner | daf4555 | 2013-08-28 00:53:59 +0200 | [diff] [blame] | 922 | .. method:: socket.dup() | 
 | 923 |  | 
 | 924 |    Duplicate the socket. | 
 | 925 |  | 
 | 926 |    The newly created socket is :ref:`non-inheritable <fd_inheritance>`. | 
 | 927 |  | 
 | 928 |    .. versionchanged:: 3.4 | 
 | 929 |       The socket is now non-inheritable. | 
 | 930 |  | 
 | 931 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 932 | .. method:: socket.fileno() | 
 | 933 |  | 
 | 934 |    Return the socket's file descriptor (a small integer).  This is useful with | 
 | 935 |    :func:`select.select`. | 
 | 936 |  | 
 | 937 |    Under Windows the small integer returned by this method cannot be used where a | 
 | 938 |    file descriptor can be used (such as :func:`os.fdopen`).  Unix does not have | 
 | 939 |    this limitation. | 
 | 940 |  | 
 | 941 |  | 
| Victor Stinner | daf4555 | 2013-08-28 00:53:59 +0200 | [diff] [blame] | 942 | .. method:: socket.get_inheritable() | 
 | 943 |  | 
 | 944 |    Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file | 
 | 945 |    descriptor or socket's handle: ``True`` if the socket can be inherited in | 
 | 946 |    child processes, ``False`` if it cannot. | 
 | 947 |  | 
 | 948 |    .. versionadded:: 3.4 | 
 | 949 |  | 
 | 950 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 951 | .. method:: socket.getpeername() | 
 | 952 |  | 
 | 953 |    Return the remote address to which the socket is connected.  This is useful to | 
 | 954 |    find out the port number of a remote IPv4/v6 socket, for instance. (The format | 
 | 955 |    of the address returned depends on the address family --- see above.)  On some | 
 | 956 |    systems this function is not supported. | 
 | 957 |  | 
 | 958 |  | 
 | 959 | .. method:: socket.getsockname() | 
 | 960 |  | 
 | 961 |    Return the socket's own address.  This is useful to find out the port number of | 
 | 962 |    an IPv4/v6 socket, for instance. (The format of the address returned depends on | 
 | 963 |    the address family --- see above.) | 
 | 964 |  | 
 | 965 |  | 
 | 966 | .. method:: socket.getsockopt(level, optname[, buflen]) | 
 | 967 |  | 
 | 968 |    Return the value of the given socket option (see the Unix man page | 
 | 969 |    :manpage:`getsockopt(2)`).  The needed symbolic constants (:const:`SO_\*` etc.) | 
 | 970 |    are defined in this module.  If *buflen* is absent, an integer option is assumed | 
 | 971 |    and its integer value is returned by the function.  If *buflen* is present, it | 
 | 972 |    specifies the maximum length of the buffer used to receive the option in, and | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 973 |    this buffer is returned as a bytes object.  It is up to the caller to decode the | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 974 |    contents of the buffer (see the optional built-in module :mod:`struct` for a way | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 975 |    to decode C structures encoded as byte strings). | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 976 |  | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 977 |  | 
| Antoine Pitrou | dfad7e3 | 2011-01-05 21:17:36 +0000 | [diff] [blame] | 978 | .. method:: socket.gettimeout() | 
 | 979 |  | 
| Ezio Melotti | 388c945 | 2011-08-14 08:28:57 +0300 | [diff] [blame] | 980 |    Return the timeout in seconds (float) associated with socket operations, | 
| Antoine Pitrou | dfad7e3 | 2011-01-05 21:17:36 +0000 | [diff] [blame] | 981 |    or ``None`` if no timeout is set.  This reflects the last call to | 
 | 982 |    :meth:`setblocking` or :meth:`settimeout`. | 
 | 983 |  | 
 | 984 |  | 
| Christian Heimes | faf2f63 | 2008-01-06 16:59:19 +0000 | [diff] [blame] | 985 | .. method:: socket.ioctl(control, option) | 
 | 986 |  | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 987 |    :platform: Windows | 
 | 988 |  | 
| Christian Heimes | 679db4a | 2008-01-18 09:56:22 +0000 | [diff] [blame] | 989 |    The :meth:`ioctl` method is a limited interface to the WSAIoctl system | 
| Georg Brandl | 8569e58 | 2010-05-19 20:57:08 +0000 | [diff] [blame] | 990 |    interface.  Please refer to the `Win32 documentation | 
| Georg Brandl | 5d94134 | 2016-02-26 19:37:12 +0100 | [diff] [blame] | 991 |    <https://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more | 
| Georg Brandl | 8569e58 | 2010-05-19 20:57:08 +0000 | [diff] [blame] | 992 |    information. | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 993 |  | 
| Alexandre Vassalotti | 6d3dfc3 | 2009-07-29 19:54:39 +0000 | [diff] [blame] | 994 |    On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl` | 
 | 995 |    functions may be used; they accept a socket object as their first argument. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 996 |  | 
| Charles-François Natali | 644b8f5 | 2014-05-22 19:45:39 +0100 | [diff] [blame] | 997 | .. method:: socket.listen([backlog]) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 998 |  | 
| Charles-François Natali | 644b8f5 | 2014-05-22 19:45:39 +0100 | [diff] [blame] | 999 |    Enable a server to accept connections.  If *backlog* is specified, it must | 
 | 1000 |    be at least 0 (if it is lower, it is set to 0); it specifies the number of | 
 | 1001 |    unaccepted connections that the system will allow before refusing new | 
 | 1002 |    connections. If not specified, a default reasonable value is chosen. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1003 |  | 
| Charles-François Natali | 644b8f5 | 2014-05-22 19:45:39 +0100 | [diff] [blame] | 1004 |    .. versionchanged:: 3.5 | 
 | 1005 |       The *backlog* parameter is now optional. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1006 |  | 
| Georg Brandl | e9e8c9b | 2010-12-28 11:49:41 +0000 | [diff] [blame] | 1007 | .. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \ | 
 | 1008 |                             errors=None, newline=None) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1009 |  | 
 | 1010 |    .. index:: single: I/O control; buffering | 
 | 1011 |  | 
| Georg Brandl | e9e8c9b | 2010-12-28 11:49:41 +0000 | [diff] [blame] | 1012 |    Return a :term:`file object` associated with the socket.  The exact returned | 
 | 1013 |    type depends on the arguments given to :meth:`makefile`.  These arguments are | 
| Berker Peksag | 3fe64d0 | 2016-02-18 17:34:00 +0200 | [diff] [blame] | 1014 |    interpreted the same way as by the built-in :func:`open` function, except | 
 | 1015 |    the only supported *mode* values are ``'r'`` (default), ``'w'`` and ``'b'``. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1016 |  | 
| Antoine Pitrou | e3658a7 | 2013-12-04 21:02:42 +0100 | [diff] [blame] | 1017 |    The socket must be in blocking mode; it can have a timeout, but the file | 
| Martin Panter | 7462b649 | 2015-11-02 03:37:02 +0000 | [diff] [blame] | 1018 |    object's internal buffer may end up in an inconsistent state if a timeout | 
| Antoine Pitrou | e3658a7 | 2013-12-04 21:02:42 +0100 | [diff] [blame] | 1019 |    occurs. | 
 | 1020 |  | 
 | 1021 |    Closing the file object returned by :meth:`makefile` won't close the | 
 | 1022 |    original socket unless all other file objects have been closed and | 
 | 1023 |    :meth:`socket.close` has been called on the socket object. | 
| Georg Brandl | e9e8c9b | 2010-12-28 11:49:41 +0000 | [diff] [blame] | 1024 |  | 
 | 1025 |    .. note:: | 
 | 1026 |  | 
 | 1027 |       On Windows, the file-like object created by :meth:`makefile` cannot be | 
 | 1028 |       used where a file object with a file descriptor is expected, such as the | 
 | 1029 |       stream arguments of :meth:`subprocess.Popen`. | 
| Antoine Pitrou | 4adb288 | 2010-01-04 18:50:53 +0000 | [diff] [blame] | 1030 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1031 |  | 
 | 1032 | .. method:: socket.recv(bufsize[, flags]) | 
 | 1033 |  | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 1034 |    Receive data from the socket.  The return value is a bytes object representing the | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1035 |    data received.  The maximum amount of data to be received at once is specified | 
 | 1036 |    by *bufsize*.  See the Unix manual page :manpage:`recv(2)` for the meaning of | 
 | 1037 |    the optional argument *flags*; it defaults to zero. | 
 | 1038 |  | 
 | 1039 |    .. note:: | 
 | 1040 |  | 
 | 1041 |       For best match with hardware and network realities, the value of  *bufsize* | 
 | 1042 |       should be a relatively small power of 2, for example, 4096. | 
 | 1043 |  | 
| Victor Stinner | 708d9ba | 2015-04-02 11:49:42 +0200 | [diff] [blame] | 1044 |    .. versionchanged:: 3.5 | 
 | 1045 |       If the system call is interrupted and the signal handler does not raise | 
 | 1046 |       an exception, the method now retries the system call instead of raising | 
 | 1047 |       an :exc:`InterruptedError` exception (see :pep:`475` for the rationale). | 
 | 1048 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1049 |  | 
 | 1050 | .. method:: socket.recvfrom(bufsize[, flags]) | 
 | 1051 |  | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 1052 |    Receive data from the socket.  The return value is a pair ``(bytes, address)`` | 
 | 1053 |    where *bytes* is a bytes object representing the data received and *address* is the | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1054 |    address of the socket sending the data.  See the Unix manual page | 
 | 1055 |    :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults | 
 | 1056 |    to zero. (The format of *address* depends on the address family --- see above.) | 
 | 1057 |  | 
| Victor Stinner | 708d9ba | 2015-04-02 11:49:42 +0200 | [diff] [blame] | 1058 |    .. versionchanged:: 3.5 | 
 | 1059 |       If the system call is interrupted and the signal handler does not raise | 
 | 1060 |       an exception, the method now retries the system call instead of raising | 
 | 1061 |       an :exc:`InterruptedError` exception (see :pep:`475` for the rationale). | 
 | 1062 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1063 |  | 
| Nick Coghlan | 96fe56a | 2011-08-22 11:55:57 +1000 | [diff] [blame] | 1064 | .. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]]) | 
 | 1065 |  | 
 | 1066 |    Receive normal data (up to *bufsize* bytes) and ancillary data from | 
 | 1067 |    the socket.  The *ancbufsize* argument sets the size in bytes of | 
 | 1068 |    the internal buffer used to receive the ancillary data; it defaults | 
 | 1069 |    to 0, meaning that no ancillary data will be received.  Appropriate | 
 | 1070 |    buffer sizes for ancillary data can be calculated using | 
 | 1071 |    :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit | 
 | 1072 |    into the buffer might be truncated or discarded.  The *flags* | 
 | 1073 |    argument defaults to 0 and has the same meaning as for | 
 | 1074 |    :meth:`recv`. | 
 | 1075 |  | 
 | 1076 |    The return value is a 4-tuple: ``(data, ancdata, msg_flags, | 
 | 1077 |    address)``.  The *data* item is a :class:`bytes` object holding the | 
 | 1078 |    non-ancillary data received.  The *ancdata* item is a list of zero | 
 | 1079 |    or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing | 
 | 1080 |    the ancillary data (control messages) received: *cmsg_level* and | 
 | 1081 |    *cmsg_type* are integers specifying the protocol level and | 
 | 1082 |    protocol-specific type respectively, and *cmsg_data* is a | 
 | 1083 |    :class:`bytes` object holding the associated data.  The *msg_flags* | 
 | 1084 |    item is the bitwise OR of various flags indicating conditions on | 
 | 1085 |    the received message; see your system documentation for details. | 
 | 1086 |    If the receiving socket is unconnected, *address* is the address of | 
 | 1087 |    the sending socket, if available; otherwise, its value is | 
 | 1088 |    unspecified. | 
 | 1089 |  | 
 | 1090 |    On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to | 
 | 1091 |    pass file descriptors between processes over an :const:`AF_UNIX` | 
 | 1092 |    socket.  When this facility is used (it is often restricted to | 
 | 1093 |    :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its | 
 | 1094 |    ancillary data, items of the form ``(socket.SOL_SOCKET, | 
 | 1095 |    socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object | 
 | 1096 |    representing the new file descriptors as a binary array of the | 
 | 1097 |    native C :c:type:`int` type.  If :meth:`recvmsg` raises an | 
 | 1098 |    exception after the system call returns, it will first attempt to | 
 | 1099 |    close any file descriptors received via this mechanism. | 
 | 1100 |  | 
 | 1101 |    Some systems do not indicate the truncated length of ancillary data | 
 | 1102 |    items which have been only partially received.  If an item appears | 
 | 1103 |    to extend beyond the end of the buffer, :meth:`recvmsg` will issue | 
 | 1104 |    a :exc:`RuntimeWarning`, and will return the part of it which is | 
 | 1105 |    inside the buffer provided it has not been truncated before the | 
 | 1106 |    start of its associated data. | 
 | 1107 |  | 
 | 1108 |    On systems which support the :const:`SCM_RIGHTS` mechanism, the | 
 | 1109 |    following function will receive up to *maxfds* file descriptors, | 
 | 1110 |    returning the message data and a list containing the descriptors | 
 | 1111 |    (while ignoring unexpected conditions such as unrelated control | 
 | 1112 |    messages being received).  See also :meth:`sendmsg`. :: | 
 | 1113 |  | 
 | 1114 |       import socket, array | 
 | 1115 |  | 
 | 1116 |       def recv_fds(sock, msglen, maxfds): | 
 | 1117 |           fds = array.array("i")   # Array of ints | 
 | 1118 |           msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize)) | 
 | 1119 |           for cmsg_level, cmsg_type, cmsg_data in ancdata: | 
 | 1120 |               if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS): | 
 | 1121 |                   # Append data, ignoring any truncated integers at the end. | 
 | 1122 |                   fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)]) | 
 | 1123 |           return msg, list(fds) | 
 | 1124 |  | 
 | 1125 |    Availability: most Unix platforms, possibly others. | 
 | 1126 |  | 
 | 1127 |    .. versionadded:: 3.3 | 
 | 1128 |  | 
| Victor Stinner | 708d9ba | 2015-04-02 11:49:42 +0200 | [diff] [blame] | 1129 |    .. versionchanged:: 3.5 | 
 | 1130 |       If the system call is interrupted and the signal handler does not raise | 
 | 1131 |       an exception, the method now retries the system call instead of raising | 
 | 1132 |       an :exc:`InterruptedError` exception (see :pep:`475` for the rationale). | 
 | 1133 |  | 
| Nick Coghlan | 96fe56a | 2011-08-22 11:55:57 +1000 | [diff] [blame] | 1134 |  | 
 | 1135 | .. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]]) | 
 | 1136 |  | 
 | 1137 |    Receive normal data and ancillary data from the socket, behaving as | 
 | 1138 |    :meth:`recvmsg` would, but scatter the non-ancillary data into a | 
 | 1139 |    series of buffers instead of returning a new bytes object.  The | 
 | 1140 |    *buffers* argument must be an iterable of objects that export | 
 | 1141 |    writable buffers (e.g. :class:`bytearray` objects); these will be | 
 | 1142 |    filled with successive chunks of the non-ancillary data until it | 
 | 1143 |    has all been written or there are no more buffers.  The operating | 
 | 1144 |    system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``) | 
 | 1145 |    on the number of buffers that can be used.  The *ancbufsize* and | 
 | 1146 |    *flags* arguments have the same meaning as for :meth:`recvmsg`. | 
 | 1147 |  | 
 | 1148 |    The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags, | 
 | 1149 |    address)``, where *nbytes* is the total number of bytes of | 
 | 1150 |    non-ancillary data written into the buffers, and *ancdata*, | 
 | 1151 |    *msg_flags* and *address* are the same as for :meth:`recvmsg`. | 
 | 1152 |  | 
 | 1153 |    Example:: | 
 | 1154 |  | 
 | 1155 |       >>> import socket | 
 | 1156 |       >>> s1, s2 = socket.socketpair() | 
 | 1157 |       >>> b1 = bytearray(b'----') | 
 | 1158 |       >>> b2 = bytearray(b'0123456789') | 
 | 1159 |       >>> b3 = bytearray(b'--------------') | 
 | 1160 |       >>> s1.send(b'Mary had a little lamb') | 
 | 1161 |       22 | 
 | 1162 |       >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3]) | 
 | 1163 |       (22, [], 0, None) | 
 | 1164 |       >>> [b1, b2, b3] | 
 | 1165 |       [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')] | 
 | 1166 |  | 
 | 1167 |    Availability: most Unix platforms, possibly others. | 
 | 1168 |  | 
 | 1169 |    .. versionadded:: 3.3 | 
 | 1170 |  | 
 | 1171 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1172 | .. method:: socket.recvfrom_into(buffer[, nbytes[, flags]]) | 
 | 1173 |  | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 1174 |    Receive data from the socket, writing it into *buffer* instead of creating a | 
 | 1175 |    new bytestring.  The return value is a pair ``(nbytes, address)`` where *nbytes* is | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1176 |    the number of bytes received and *address* is the address of the socket sending | 
 | 1177 |    the data.  See the Unix manual page :manpage:`recv(2)` for the meaning of the | 
 | 1178 |    optional argument *flags*; it defaults to zero.  (The format of *address* | 
 | 1179 |    depends on the address family --- see above.) | 
 | 1180 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1181 |  | 
 | 1182 | .. method:: socket.recv_into(buffer[, nbytes[, flags]]) | 
 | 1183 |  | 
 | 1184 |    Receive up to *nbytes* bytes from the socket, storing the data into a buffer | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 1185 |    rather than creating a new bytestring.  If *nbytes* is not specified (or 0), | 
| Benjamin Peterson | 08bf91c | 2010-04-11 16:12:57 +0000 | [diff] [blame] | 1186 |    receive up to the size available in the given buffer.  Returns the number of | 
 | 1187 |    bytes received.  See the Unix manual page :manpage:`recv(2)` for the meaning | 
 | 1188 |    of the optional argument *flags*; it defaults to zero. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1189 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1190 |  | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 1191 | .. method:: socket.send(bytes[, flags]) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1192 |  | 
 | 1193 |    Send data to the socket.  The socket must be connected to a remote socket.  The | 
 | 1194 |    optional *flags* argument has the same meaning as for :meth:`recv` above. | 
 | 1195 |    Returns the number of bytes sent. Applications are responsible for checking that | 
 | 1196 |    all data has been sent; if only some of the data was transmitted, the | 
| Senthil Kumaran | 6e13f13 | 2012-02-09 17:54:17 +0800 | [diff] [blame] | 1197 |    application needs to attempt delivery of the remaining data. For further | 
 | 1198 |    information on this topic, consult the :ref:`socket-howto`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1199 |  | 
| Victor Stinner | 708d9ba | 2015-04-02 11:49:42 +0200 | [diff] [blame] | 1200 |    .. versionchanged:: 3.5 | 
 | 1201 |       If the system call is interrupted and the signal handler does not raise | 
 | 1202 |       an exception, the method now retries the system call instead of raising | 
 | 1203 |       an :exc:`InterruptedError` exception (see :pep:`475` for the rationale). | 
 | 1204 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1205 |  | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 1206 | .. method:: socket.sendall(bytes[, flags]) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1207 |  | 
 | 1208 |    Send data to the socket.  The socket must be connected to a remote socket.  The | 
 | 1209 |    optional *flags* argument has the same meaning as for :meth:`recv` above. | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 1210 |    Unlike :meth:`send`, this method continues to send data from *bytes* until | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1211 |    either all data has been sent or an error occurs.  ``None`` is returned on | 
 | 1212 |    success.  On error, an exception is raised, and there is no way to determine how | 
 | 1213 |    much data, if any, was successfully sent. | 
 | 1214 |  | 
| Victor Stinner | 708d9ba | 2015-04-02 11:49:42 +0200 | [diff] [blame] | 1215 |    .. versionchanged:: 3.5 | 
| Victor Stinner | 8912d14 | 2015-04-06 23:16:34 +0200 | [diff] [blame] | 1216 |       The socket timeout is no more reset each time data is sent successfuly. | 
 | 1217 |       The socket timeout is now the maximum total duration to send all data. | 
 | 1218 |  | 
 | 1219 |    .. versionchanged:: 3.5 | 
| Victor Stinner | 708d9ba | 2015-04-02 11:49:42 +0200 | [diff] [blame] | 1220 |       If the system call is interrupted and the signal handler does not raise | 
 | 1221 |       an exception, the method now retries the system call instead of raising | 
 | 1222 |       an :exc:`InterruptedError` exception (see :pep:`475` for the rationale). | 
 | 1223 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1224 |  | 
| Ezio Melotti | e0add76 | 2012-09-14 06:32:35 +0300 | [diff] [blame] | 1225 | .. method:: socket.sendto(bytes, address) | 
 | 1226 |             socket.sendto(bytes, flags, address) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1227 |  | 
 | 1228 |    Send data to the socket.  The socket should not be connected to a remote socket, | 
 | 1229 |    since the destination socket is specified by *address*.  The optional *flags* | 
 | 1230 |    argument has the same meaning as for :meth:`recv` above.  Return the number of | 
 | 1231 |    bytes sent. (The format of *address* depends on the address family --- see | 
 | 1232 |    above.) | 
 | 1233 |  | 
| Victor Stinner | 708d9ba | 2015-04-02 11:49:42 +0200 | [diff] [blame] | 1234 |    .. versionchanged:: 3.5 | 
 | 1235 |       If the system call is interrupted and the signal handler does not raise | 
 | 1236 |       an exception, the method now retries the system call instead of raising | 
 | 1237 |       an :exc:`InterruptedError` exception (see :pep:`475` for the rationale). | 
 | 1238 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1239 |  | 
| Nick Coghlan | 96fe56a | 2011-08-22 11:55:57 +1000 | [diff] [blame] | 1240 | .. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]]) | 
 | 1241 |  | 
 | 1242 |    Send normal and ancillary data to the socket, gathering the | 
 | 1243 |    non-ancillary data from a series of buffers and concatenating it | 
 | 1244 |    into a single message.  The *buffers* argument specifies the | 
| Serhiy Storchaka | b757c83 | 2014-12-05 22:25:22 +0200 | [diff] [blame] | 1245 |    non-ancillary data as an iterable of | 
 | 1246 |    :term:`bytes-like objects <bytes-like object>` | 
| Nick Coghlan | 96fe56a | 2011-08-22 11:55:57 +1000 | [diff] [blame] | 1247 |    (e.g. :class:`bytes` objects); the operating system may set a limit | 
 | 1248 |    (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers | 
 | 1249 |    that can be used.  The *ancdata* argument specifies the ancillary | 
 | 1250 |    data (control messages) as an iterable of zero or more tuples | 
 | 1251 |    ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and | 
 | 1252 |    *cmsg_type* are integers specifying the protocol level and | 
 | 1253 |    protocol-specific type respectively, and *cmsg_data* is a | 
| Serhiy Storchaka | b757c83 | 2014-12-05 22:25:22 +0200 | [diff] [blame] | 1254 |    bytes-like object holding the associated data.  Note that | 
| Nick Coghlan | 96fe56a | 2011-08-22 11:55:57 +1000 | [diff] [blame] | 1255 |    some systems (in particular, systems without :func:`CMSG_SPACE`) | 
 | 1256 |    might support sending only one control message per call.  The | 
 | 1257 |    *flags* argument defaults to 0 and has the same meaning as for | 
 | 1258 |    :meth:`send`.  If *address* is supplied and not ``None``, it sets a | 
 | 1259 |    destination address for the message.  The return value is the | 
 | 1260 |    number of bytes of non-ancillary data sent. | 
 | 1261 |  | 
 | 1262 |    The following function sends the list of file descriptors *fds* | 
 | 1263 |    over an :const:`AF_UNIX` socket, on systems which support the | 
 | 1264 |    :const:`SCM_RIGHTS` mechanism.  See also :meth:`recvmsg`. :: | 
 | 1265 |  | 
 | 1266 |       import socket, array | 
 | 1267 |  | 
 | 1268 |       def send_fds(sock, msg, fds): | 
 | 1269 |           return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))]) | 
 | 1270 |  | 
 | 1271 |    Availability: most Unix platforms, possibly others. | 
 | 1272 |  | 
 | 1273 |    .. versionadded:: 3.3 | 
 | 1274 |  | 
| Victor Stinner | 708d9ba | 2015-04-02 11:49:42 +0200 | [diff] [blame] | 1275 |    .. versionchanged:: 3.5 | 
 | 1276 |       If the system call is interrupted and the signal handler does not raise | 
 | 1277 |       an exception, the method now retries the system call instead of raising | 
 | 1278 |       an :exc:`InterruptedError` exception (see :pep:`475` for the rationale). | 
 | 1279 |  | 
| Giampaolo Rodola' | 915d141 | 2014-06-11 03:54:30 +0200 | [diff] [blame] | 1280 | .. method:: socket.sendfile(file, offset=0, count=None) | 
 | 1281 |  | 
 | 1282 |    Send a file until EOF is reached by using high-performance | 
 | 1283 |    :mod:`os.sendfile` and return the total number of bytes which were sent. | 
 | 1284 |    *file* must be a regular file object opened in binary mode. If | 
 | 1285 |    :mod:`os.sendfile` is not available (e.g. Windows) or *file* is not a | 
 | 1286 |    regular file :meth:`send` will be used instead. *offset* tells from where to | 
 | 1287 |    start reading the file. If specified, *count* is the total number of bytes | 
 | 1288 |    to transmit as opposed to sending the file until EOF is reached. File | 
 | 1289 |    position is updated on return or also in case of error in which case | 
 | 1290 |    :meth:`file.tell() <io.IOBase.tell>` can be used to figure out the number of | 
 | 1291 |    bytes which were sent. The socket must be of :const:`SOCK_STREAM` type. Non- | 
 | 1292 |    blocking sockets are not supported. | 
 | 1293 |  | 
 | 1294 |    .. versionadded:: 3.5 | 
| Nick Coghlan | 96fe56a | 2011-08-22 11:55:57 +1000 | [diff] [blame] | 1295 |  | 
| Victor Stinner | daf4555 | 2013-08-28 00:53:59 +0200 | [diff] [blame] | 1296 | .. method:: socket.set_inheritable(inheritable) | 
 | 1297 |  | 
 | 1298 |    Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file | 
 | 1299 |    descriptor or socket's handle. | 
 | 1300 |  | 
 | 1301 |    .. versionadded:: 3.4 | 
 | 1302 |  | 
 | 1303 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1304 | .. method:: socket.setblocking(flag) | 
 | 1305 |  | 
| Antoine Pitrou | dfad7e3 | 2011-01-05 21:17:36 +0000 | [diff] [blame] | 1306 |    Set blocking or non-blocking mode of the socket: if *flag* is false, the | 
 | 1307 |    socket is set to non-blocking, else to blocking mode. | 
 | 1308 |  | 
 | 1309 |    This method is a shorthand for certain :meth:`~socket.settimeout` calls: | 
 | 1310 |  | 
 | 1311 |    * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)`` | 
 | 1312 |  | 
 | 1313 |    * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)`` | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1314 |  | 
 | 1315 |  | 
 | 1316 | .. method:: socket.settimeout(value) | 
 | 1317 |  | 
 | 1318 |    Set a timeout on blocking socket operations.  The *value* argument can be a | 
| Antoine Pitrou | dfad7e3 | 2011-01-05 21:17:36 +0000 | [diff] [blame] | 1319 |    nonnegative floating point number expressing seconds, or ``None``. | 
 | 1320 |    If a non-zero value is given, subsequent socket operations will raise a | 
 | 1321 |    :exc:`timeout` exception if the timeout period *value* has elapsed before | 
 | 1322 |    the operation has completed.  If zero is given, the socket is put in | 
 | 1323 |    non-blocking mode. If ``None`` is given, the socket is put in blocking mode. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1324 |  | 
| Antoine Pitrou | dfad7e3 | 2011-01-05 21:17:36 +0000 | [diff] [blame] | 1325 |    For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1326 |  | 
 | 1327 |  | 
 | 1328 | .. method:: socket.setsockopt(level, optname, value) | 
 | 1329 |  | 
 | 1330 |    .. index:: module: struct | 
 | 1331 |  | 
 | 1332 |    Set the value of the given socket option (see the Unix manual page | 
 | 1333 |    :manpage:`setsockopt(2)`).  The needed symbolic constants are defined in the | 
| Serhiy Storchaka | 8490f5a | 2015-03-20 09:00:36 +0200 | [diff] [blame] | 1334 |    :mod:`socket` module (:const:`SO_\*` etc.).  The value can be an integer or | 
 | 1335 |    a :term:`bytes-like object` representing a buffer.  In the latter case it is | 
 | 1336 |    up to the caller to | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 1337 |    ensure that the bytestring contains the proper bits (see the optional built-in | 
 | 1338 |    module :mod:`struct` for a way to encode C structures as bytestrings). | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1339 |  | 
| Georg Brandl | 8c16cb9 | 2016-02-25 20:17:45 +0100 | [diff] [blame] | 1340 |    .. versionchanged:: 3.5 | 
| Serhiy Storchaka | 8490f5a | 2015-03-20 09:00:36 +0200 | [diff] [blame] | 1341 |       Writable :term:`bytes-like object` is now accepted. | 
 | 1342 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1343 |  | 
 | 1344 | .. method:: socket.shutdown(how) | 
 | 1345 |  | 
 | 1346 |    Shut down one or both halves of the connection.  If *how* is :const:`SHUT_RD`, | 
 | 1347 |    further receives are disallowed.  If *how* is :const:`SHUT_WR`, further sends | 
 | 1348 |    are disallowed.  If *how* is :const:`SHUT_RDWR`, further sends and receives are | 
| Charles-François Natali | cdc878e | 2012-01-29 16:42:54 +0100 | [diff] [blame] | 1349 |    disallowed. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1350 |  | 
| Kristján Valur Jónsson | 10f383a | 2012-04-07 11:23:31 +0000 | [diff] [blame] | 1351 |  | 
 | 1352 | .. method:: socket.share(process_id) | 
 | 1353 |  | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 1354 |    Duplicate a socket and prepare it for sharing with a target process.  The | 
 | 1355 |    target process must be provided with *process_id*.  The resulting bytes object | 
 | 1356 |    can then be passed to the target process using some form of interprocess | 
 | 1357 |    communication and the socket can be recreated there using :func:`fromshare`. | 
 | 1358 |    Once this method has been called, it is safe to close the socket since | 
 | 1359 |    the operating system has already duplicated it for the target process. | 
| Kristján Valur Jónsson | 10f383a | 2012-04-07 11:23:31 +0000 | [diff] [blame] | 1360 |  | 
| Antoine Pitrou | a5cc9d6 | 2013-12-04 21:11:03 +0100 | [diff] [blame] | 1361 |    Availability: Windows. | 
| Kristján Valur Jónsson | 10f383a | 2012-04-07 11:23:31 +0000 | [diff] [blame] | 1362 |  | 
 | 1363 |    .. versionadded:: 3.3 | 
 | 1364 |  | 
 | 1365 |  | 
| Georg Brandl | 8569e58 | 2010-05-19 20:57:08 +0000 | [diff] [blame] | 1366 | Note that there are no methods :meth:`read` or :meth:`write`; use | 
 | 1367 | :meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1368 |  | 
 | 1369 | Socket objects also have these (read-only) attributes that correspond to the | 
 | 1370 | values given to the :class:`socket` constructor. | 
 | 1371 |  | 
 | 1372 |  | 
 | 1373 | .. attribute:: socket.family | 
 | 1374 |  | 
 | 1375 |    The socket family. | 
 | 1376 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1377 |  | 
 | 1378 | .. attribute:: socket.type | 
 | 1379 |  | 
 | 1380 |    The socket type. | 
 | 1381 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1382 |  | 
 | 1383 | .. attribute:: socket.proto | 
 | 1384 |  | 
 | 1385 |    The socket protocol. | 
 | 1386 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1387 |  | 
| Antoine Pitrou | dfad7e3 | 2011-01-05 21:17:36 +0000 | [diff] [blame] | 1388 |  | 
 | 1389 | .. _socket-timeouts: | 
 | 1390 |  | 
 | 1391 | Notes on socket timeouts | 
 | 1392 | ------------------------ | 
 | 1393 |  | 
 | 1394 | A socket object can be in one of three modes: blocking, non-blocking, or | 
 | 1395 | timeout.  Sockets are by default always created in blocking mode, but this | 
 | 1396 | can be changed by calling :func:`setdefaulttimeout`. | 
 | 1397 |  | 
 | 1398 | * In *blocking mode*, operations block until complete or the system returns | 
 | 1399 |   an error (such as connection timed out). | 
 | 1400 |  | 
 | 1401 | * In *non-blocking mode*, operations fail (with an error that is unfortunately | 
 | 1402 |   system-dependent) if they cannot be completed immediately: functions from the | 
 | 1403 |   :mod:`select` can be used to know when and whether a socket is available for | 
 | 1404 |   reading or writing. | 
 | 1405 |  | 
 | 1406 | * In *timeout mode*, operations fail if they cannot be completed within the | 
 | 1407 |   timeout specified for the socket (they raise a :exc:`timeout` exception) | 
 | 1408 |   or if the system returns an error. | 
 | 1409 |  | 
 | 1410 | .. note:: | 
 | 1411 |    At the operating system level, sockets in *timeout mode* are internally set | 
 | 1412 |    in non-blocking mode.  Also, the blocking and timeout modes are shared between | 
 | 1413 |    file descriptors and socket objects that refer to the same network endpoint. | 
 | 1414 |    This implementation detail can have visible consequences if e.g. you decide | 
 | 1415 |    to use the :meth:`~socket.fileno()` of a socket. | 
 | 1416 |  | 
 | 1417 | Timeouts and the ``connect`` method | 
 | 1418 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 | 1419 |  | 
 | 1420 | The :meth:`~socket.connect` operation is also subject to the timeout | 
 | 1421 | setting, and in general it is recommended to call :meth:`~socket.settimeout` | 
 | 1422 | before calling :meth:`~socket.connect` or pass a timeout parameter to | 
 | 1423 | :meth:`create_connection`.  However, the system network stack may also | 
 | 1424 | return a connection timeout error of its own regardless of any Python socket | 
 | 1425 | timeout setting. | 
 | 1426 |  | 
 | 1427 | Timeouts and the ``accept`` method | 
 | 1428 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 
 | 1429 |  | 
 | 1430 | If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by | 
 | 1431 | the :meth:`~socket.accept` method inherit that timeout.  Otherwise, the | 
 | 1432 | behaviour depends on settings of the listening socket: | 
 | 1433 |  | 
 | 1434 | * if the listening socket is in *blocking mode* or in *timeout mode*, | 
 | 1435 |   the socket returned by :meth:`~socket.accept` is in *blocking mode*; | 
 | 1436 |  | 
 | 1437 | * if the listening socket is in *non-blocking mode*, whether the socket | 
 | 1438 |   returned by :meth:`~socket.accept` is in blocking or non-blocking mode | 
 | 1439 |   is operating system-dependent.  If you want to ensure cross-platform | 
 | 1440 |   behaviour, it is recommended you manually override this setting. | 
 | 1441 |  | 
 | 1442 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1443 | .. _socket-example: | 
 | 1444 |  | 
 | 1445 | Example | 
 | 1446 | ------- | 
 | 1447 |  | 
 | 1448 | Here are four minimal example programs using the TCP/IP protocol: a server that | 
 | 1449 | echoes all data that it receives back (servicing only one client), and a client | 
| Ezio Melotti | c048d98 | 2013-04-17 04:10:26 +0300 | [diff] [blame] | 1450 | using it.  Note that a server must perform the sequence :func:`.socket`, | 
| Georg Brandl | 8569e58 | 2010-05-19 20:57:08 +0000 | [diff] [blame] | 1451 | :meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly | 
 | 1452 | repeating the :meth:`~socket.accept` to service more than one client), while a | 
| Ezio Melotti | c048d98 | 2013-04-17 04:10:26 +0300 | [diff] [blame] | 1453 | client only needs the sequence :func:`.socket`, :meth:`~socket.connect`.  Also | 
| Senthil Kumaran | 6e13f13 | 2012-02-09 17:54:17 +0800 | [diff] [blame] | 1454 | note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on | 
 | 1455 | the socket it is listening on but on the new socket returned by | 
| Georg Brandl | 8569e58 | 2010-05-19 20:57:08 +0000 | [diff] [blame] | 1456 | :meth:`~socket.accept`. | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1457 |  | 
 | 1458 | The first two examples support IPv4 only. :: | 
 | 1459 |  | 
 | 1460 |    # Echo server program | 
 | 1461 |    import socket | 
 | 1462 |  | 
| Christian Heimes | 81ee3ef | 2008-05-04 22:42:01 +0000 | [diff] [blame] | 1463 |    HOST = ''                 # Symbolic name meaning all available interfaces | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1464 |    PORT = 50007              # Arbitrary non-privileged port | 
| Martin Panter | e37fc18 | 2016-04-24 04:24:36 +0000 | [diff] [blame] | 1465 |    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: | 
 | 1466 |        s.bind((HOST, PORT)) | 
 | 1467 |        s.listen(1) | 
 | 1468 |        conn, addr = s.accept() | 
 | 1469 |        with conn: | 
 | 1470 |            print('Connected by', addr) | 
 | 1471 |            while True: | 
 | 1472 |                data = conn.recv(1024) | 
 | 1473 |                if not data: break | 
 | 1474 |                conn.sendall(data) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1475 |  | 
 | 1476 | :: | 
 | 1477 |  | 
 | 1478 |    # Echo client program | 
 | 1479 |    import socket | 
 | 1480 |  | 
 | 1481 |    HOST = 'daring.cwi.nl'    # The remote host | 
 | 1482 |    PORT = 50007              # The same port as used by the server | 
| Martin Panter | e37fc18 | 2016-04-24 04:24:36 +0000 | [diff] [blame] | 1483 |    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: | 
 | 1484 |        s.connect((HOST, PORT)) | 
 | 1485 |        s.sendall(b'Hello, world') | 
 | 1486 |        data = s.recv(1024) | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1487 |    print('Received', repr(data)) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1488 |  | 
 | 1489 | The next two examples are identical to the above two, but support both IPv4 and | 
 | 1490 | IPv6. The server side will listen to the first address family available (it | 
 | 1491 | should listen to both instead). On most of IPv6-ready systems, IPv6 will take | 
 | 1492 | precedence and the server may not accept IPv4 traffic. The client side will try | 
 | 1493 | to connect to the all addresses returned as a result of the name resolution, and | 
 | 1494 | sends traffic to the first one connected successfully. :: | 
 | 1495 |  | 
 | 1496 |    # Echo server program | 
 | 1497 |    import socket | 
 | 1498 |    import sys | 
 | 1499 |  | 
| Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 1500 |    HOST = None               # Symbolic name meaning all available interfaces | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1501 |    PORT = 50007              # Arbitrary non-privileged port | 
 | 1502 |    s = None | 
| Georg Brandl | 42b2f2e | 2008-08-14 11:50:32 +0000 | [diff] [blame] | 1503 |    for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, | 
 | 1504 |                                  socket.SOCK_STREAM, 0, socket.AI_PASSIVE): | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1505 |        af, socktype, proto, canonname, sa = res | 
 | 1506 |        try: | 
| Georg Brandl | a1c6a1c | 2009-01-03 21:26:05 +0000 | [diff] [blame] | 1507 |            s = socket.socket(af, socktype, proto) | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 1508 |        except OSError as msg: | 
| Georg Brandl | a1c6a1c | 2009-01-03 21:26:05 +0000 | [diff] [blame] | 1509 |            s = None | 
 | 1510 |            continue | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1511 |        try: | 
| Georg Brandl | a1c6a1c | 2009-01-03 21:26:05 +0000 | [diff] [blame] | 1512 |            s.bind(sa) | 
 | 1513 |            s.listen(1) | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 1514 |        except OSError as msg: | 
| Georg Brandl | a1c6a1c | 2009-01-03 21:26:05 +0000 | [diff] [blame] | 1515 |            s.close() | 
 | 1516 |            s = None | 
 | 1517 |            continue | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1518 |        break | 
 | 1519 |    if s is None: | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1520 |        print('could not open socket') | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1521 |        sys.exit(1) | 
 | 1522 |    conn, addr = s.accept() | 
| Martin Panter | e37fc18 | 2016-04-24 04:24:36 +0000 | [diff] [blame] | 1523 |    with conn: | 
 | 1524 |        print('Connected by', addr) | 
 | 1525 |        while True: | 
 | 1526 |            data = conn.recv(1024) | 
 | 1527 |            if not data: break | 
 | 1528 |            conn.send(data) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1529 |  | 
 | 1530 | :: | 
 | 1531 |  | 
 | 1532 |    # Echo client program | 
 | 1533 |    import socket | 
 | 1534 |    import sys | 
 | 1535 |  | 
 | 1536 |    HOST = 'daring.cwi.nl'    # The remote host | 
 | 1537 |    PORT = 50007              # The same port as used by the server | 
 | 1538 |    s = None | 
 | 1539 |    for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM): | 
 | 1540 |        af, socktype, proto, canonname, sa = res | 
 | 1541 |        try: | 
| Georg Brandl | a1c6a1c | 2009-01-03 21:26:05 +0000 | [diff] [blame] | 1542 |            s = socket.socket(af, socktype, proto) | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 1543 |        except OSError as msg: | 
| Georg Brandl | a1c6a1c | 2009-01-03 21:26:05 +0000 | [diff] [blame] | 1544 |            s = None | 
 | 1545 |            continue | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1546 |        try: | 
| Georg Brandl | a1c6a1c | 2009-01-03 21:26:05 +0000 | [diff] [blame] | 1547 |            s.connect(sa) | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 1548 |        except OSError as msg: | 
| Georg Brandl | a1c6a1c | 2009-01-03 21:26:05 +0000 | [diff] [blame] | 1549 |            s.close() | 
 | 1550 |            s = None | 
 | 1551 |            continue | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1552 |        break | 
 | 1553 |    if s is None: | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1554 |        print('could not open socket') | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1555 |        sys.exit(1) | 
| Martin Panter | e37fc18 | 2016-04-24 04:24:36 +0000 | [diff] [blame] | 1556 |    with s: | 
 | 1557 |        s.sendall(b'Hello, world') | 
 | 1558 |        data = s.recv(1024) | 
| Georg Brandl | 6911e3c | 2007-09-04 07:15:32 +0000 | [diff] [blame] | 1559 |    print('Received', repr(data)) | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1560 |  | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 1561 |  | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 1562 | The next example shows how to write a very simple network sniffer with raw | 
| Alexandre Vassalotti | 5f8ced2 | 2008-05-16 00:03:33 +0000 | [diff] [blame] | 1563 | sockets on Windows. The example requires administrator privileges to modify | 
| Christian Heimes | faf2f63 | 2008-01-06 16:59:19 +0000 | [diff] [blame] | 1564 | the interface:: | 
 | 1565 |  | 
 | 1566 |    import socket | 
 | 1567 |  | 
 | 1568 |    # the public network interface | 
 | 1569 |    HOST = socket.gethostbyname(socket.gethostname()) | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 1570 |  | 
| Christian Heimes | faf2f63 | 2008-01-06 16:59:19 +0000 | [diff] [blame] | 1571 |    # create a raw socket and bind it to the public interface | 
 | 1572 |    s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP) | 
 | 1573 |    s.bind((HOST, 0)) | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 1574 |  | 
| Christian Heimes | faf2f63 | 2008-01-06 16:59:19 +0000 | [diff] [blame] | 1575 |    # Include IP headers | 
 | 1576 |    s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 1577 |  | 
| Christian Heimes | faf2f63 | 2008-01-06 16:59:19 +0000 | [diff] [blame] | 1578 |    # receive all packages | 
 | 1579 |    s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 1580 |  | 
| Christian Heimes | faf2f63 | 2008-01-06 16:59:19 +0000 | [diff] [blame] | 1581 |    # receive a package | 
| Neal Norwitz | 752abd0 | 2008-05-13 04:55:24 +0000 | [diff] [blame] | 1582 |    print(s.recvfrom(65565)) | 
| Georg Brandl | 48310cd | 2009-01-03 21:18:54 +0000 | [diff] [blame] | 1583 |  | 
| Christian Heimes | c3f30c4 | 2008-02-22 16:37:40 +0000 | [diff] [blame] | 1584 |    # disabled promiscuous mode | 
| Christian Heimes | faf2f63 | 2008-01-06 16:59:19 +0000 | [diff] [blame] | 1585 |    s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF) | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 1586 |  | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 1587 | The last example shows how to use the socket interface to communicate to a CAN | 
| Charles-François Natali | 773e42d | 2013-02-05 19:42:01 +0100 | [diff] [blame] | 1588 | network using the raw socket protocol. To use CAN with the broadcast | 
 | 1589 | manager protocol instead, open a socket with:: | 
 | 1590 |  | 
 | 1591 |     socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM) | 
 | 1592 |  | 
 | 1593 | After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you | 
| Mark Dickinson | d80b16d | 2013-02-10 18:43:16 +0000 | [diff] [blame] | 1594 | can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and | 
| Charles-François Natali | 773e42d | 2013-02-05 19:42:01 +0100 | [diff] [blame] | 1595 | their counterparts) on the socket object as usual. | 
 | 1596 |  | 
| Donald Stufft | 8b852f1 | 2014-05-20 12:58:38 -0400 | [diff] [blame] | 1597 | This example might require special privileges:: | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 1598 |  | 
 | 1599 |    import socket | 
 | 1600 |    import struct | 
 | 1601 |  | 
 | 1602 |  | 
| Georg Brandl | a673eb8 | 2012-03-04 16:17:05 +0100 | [diff] [blame] | 1603 |    # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>) | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 1604 |  | 
 | 1605 |    can_frame_fmt = "=IB3x8s" | 
| Victor Stinner | b09460f | 2011-10-06 20:27:20 +0200 | [diff] [blame] | 1606 |    can_frame_size = struct.calcsize(can_frame_fmt) | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 1607 |  | 
 | 1608 |    def build_can_frame(can_id, data): | 
 | 1609 |        can_dlc = len(data) | 
 | 1610 |        data = data.ljust(8, b'\x00') | 
 | 1611 |        return struct.pack(can_frame_fmt, can_id, can_dlc, data) | 
 | 1612 |  | 
 | 1613 |    def dissect_can_frame(frame): | 
 | 1614 |        can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame) | 
 | 1615 |        return (can_id, can_dlc, data[:can_dlc]) | 
 | 1616 |  | 
 | 1617 |  | 
| Georg Brandl | a673eb8 | 2012-03-04 16:17:05 +0100 | [diff] [blame] | 1618 |    # create a raw socket and bind it to the 'vcan0' interface | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 1619 |    s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW) | 
 | 1620 |    s.bind(('vcan0',)) | 
 | 1621 |  | 
 | 1622 |    while True: | 
| Victor Stinner | b09460f | 2011-10-06 20:27:20 +0200 | [diff] [blame] | 1623 |        cf, addr = s.recvfrom(can_frame_size) | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 1624 |  | 
 | 1625 |        print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf)) | 
 | 1626 |  | 
 | 1627 |        try: | 
 | 1628 |            s.send(cf) | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 1629 |        except OSError: | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 1630 |            print('Error sending CAN frame') | 
 | 1631 |  | 
 | 1632 |        try: | 
 | 1633 |            s.send(build_can_frame(0x01, b'\x01\x02\x03')) | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 1634 |        except OSError: | 
| Charles-François Natali | 47413c1 | 2011-10-06 19:47:44 +0200 | [diff] [blame] | 1635 |            print('Error sending CAN frame') | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 1636 |  | 
| Sandro Tosi | 172f374 | 2011-09-02 20:06:31 +0200 | [diff] [blame] | 1637 | Running an example several times with too small delay between executions, could | 
 | 1638 | lead to this error:: | 
 | 1639 |  | 
| Antoine Pitrou | 5574c30 | 2011-10-12 17:53:43 +0200 | [diff] [blame] | 1640 |    OSError: [Errno 98] Address already in use | 
| Sandro Tosi | 172f374 | 2011-09-02 20:06:31 +0200 | [diff] [blame] | 1641 |  | 
 | 1642 | This is because the previous execution has left the socket in a ``TIME_WAIT`` | 
 | 1643 | state, and can't be immediately reused. | 
 | 1644 |  | 
 | 1645 | There is a :mod:`socket` flag to set, in order to prevent this, | 
 | 1646 | :data:`socket.SO_REUSEADDR`:: | 
 | 1647 |  | 
 | 1648 |    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | 
 | 1649 |    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | 
 | 1650 |    s.bind((HOST, PORT)) | 
 | 1651 |  | 
 | 1652 | the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in | 
 | 1653 | ``TIME_WAIT`` state, without waiting for its natural timeout to expire. | 
 | 1654 |  | 
 | 1655 |  | 
| Antoine Pitrou | 7bdfe77 | 2010-12-12 20:57:12 +0000 | [diff] [blame] | 1656 | .. seealso:: | 
 | 1657 |  | 
 | 1658 |    For an introduction to socket programming (in C), see the following papers: | 
 | 1659 |  | 
 | 1660 |    - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest | 
 | 1661 |  | 
 | 1662 |    - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J.  Leffler et | 
 | 1663 |      al, | 
 | 1664 |  | 
 | 1665 |    both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections | 
 | 1666 |    PS1:7 and PS1:8).  The platform-specific reference material for the various | 
 | 1667 |    socket-related system calls are also a valuable source of information on the | 
 | 1668 |    details of socket semantics.  For Unix, refer to the manual pages; for Windows, | 
 | 1669 |    see the WinSock (or Winsock 2) specification.  For IPv6-ready APIs, readers may | 
 | 1670 |    want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6. |