blob: ddda4d2de947a211547027262292c763a0b186ab [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`socket` --- Low-level networking interface
2================================================
3
4.. module:: socket
5 :synopsis: Low-level networking interface.
6
Terry Jan Reedyfa089b92016-06-11 15:02:54 -04007**Source code:** :source:`Lib/socket.py`
8
9--------------
Georg Brandl116aa622007-08-15 14:28:22 +000010
11This module provides access to the BSD *socket* interface. It is available on
Andrew Kuchling98f2bbf2014-03-01 07:53:28 -050012all modern Unix systems, Windows, MacOS, and probably additional platforms.
Georg Brandl116aa622007-08-15 14:28:22 +000013
14.. note::
15
16 Some behavior may be platform dependent, since calls are made to the operating
17 system socket APIs.
18
Georg Brandl116aa622007-08-15 14:28:22 +000019.. index:: object: socket
20
21The Python interface is a straightforward transliteration of the Unix system
22call and library interface for sockets to Python's object-oriented style: the
Ezio Melottic048d982013-04-17 04:10:26 +030023:func:`.socket` function returns a :dfn:`socket object` whose methods implement
Georg Brandl116aa622007-08-15 14:28:22 +000024the various socket system calls. Parameter types are somewhat higher-level than
25in the C interface: as with :meth:`read` and :meth:`write` operations on Python
26files, buffer allocation on receive operations is automatic, and buffer length
27is implicit on send operations.
28
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000029
Antoine Pitroue1bc8982011-01-02 22:12:22 +000030.. seealso::
31
32 Module :mod:`socketserver`
33 Classes that simplify writing network servers.
34
35 Module :mod:`ssl`
36 A TLS/SSL wrapper for socket objects.
37
38
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000039Socket families
40---------------
41
42Depending on the system and the build options, various socket families
43are supported by this module.
44
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010045The address format required by a particular socket object is automatically
46selected based on the address family specified when the socket object was
47created. Socket addresses are represented as follows:
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000048
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010049- The address of an :const:`AF_UNIX` socket bound to a file system node
50 is represented as a string, using the file system encoding and the
51 ``'surrogateescape'`` error handler (see :pep:`383`). An address in
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +020052 Linux's abstract namespace is returned as a :term:`bytes-like object` with
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010053 an initial null byte; note that sockets in this namespace can
54 communicate with normal file system sockets, so programs intended to
55 run on Linux may need to deal with both types of address. A string or
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +020056 bytes-like object can be used for either type of address when
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010057 passing it as an argument.
58
Andre Delfino96a09df2020-12-17 14:25:55 -030059 .. versionchanged:: 3.3
60 Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8
61 encoding.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000062
Andre Delfino96a09df2020-12-17 14:25:55 -030063 .. versionchanged:: 3.5
64 Writable :term:`bytes-like object` is now accepted.
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +020065
R David Murray6b46ec72016-09-07 14:01:23 -040066.. _host_port:
67
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000068- A pair ``(host, port)`` is used for the :const:`AF_INET` address family,
69 where *host* is a string representing either a hostname in Internet domain
70 notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``,
Sandro Tosi27b130e2012-06-14 00:37:09 +020071 and *port* is an integer.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000072
johnthagen95dfb9c2018-07-28 06:03:23 -040073 - For IPv4 addresses, two special forms are accepted instead of a host
74 address: ``''`` represents :const:`INADDR_ANY`, which is used to bind to all
75 interfaces, and the string ``'<broadcast>'`` represents
76 :const:`INADDR_BROADCAST`. This behavior is not compatible with IPv6,
77 therefore, you may want to avoid these if you intend to support IPv6 with your
78 Python programs.
79
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000080- For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
opavlyuk21da76d2020-02-26 16:33:57 +020081 scope_id)`` is used, where *flowinfo* and *scope_id* represent the ``sin6_flowinfo``
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000082 and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C. For
opavlyuk21da76d2020-02-26 16:33:57 +020083 :mod:`socket` module methods, *flowinfo* and *scope_id* can be omitted just for
84 backward compatibility. Note, however, omission of *scope_id* can cause problems
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000085 in manipulating scoped IPv6 addresses.
86
Коренберг Марк7766b962018-02-13 00:47:42 +050087 .. versionchanged:: 3.7
opavlyuk21da76d2020-02-26 16:33:57 +020088 For multicast addresses (with *scope_id* meaningful) *address* may not contain
89 ``%scope_id`` (or ``zone id``) part. This information is superfluous and may
Коренберг Марк7766b962018-02-13 00:47:42 +050090 be safely omitted (recommended).
91
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000092- :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``.
93
94- Linux-only support for TIPC is available using the :const:`AF_TIPC`
95 address family. TIPC is an open, non-IP based networked protocol designed
96 for use in clustered computer environments. Addresses are represented by a
97 tuple, and the fields depend on the address type. The general tuple form is
98 ``(addr_type, v1, v2, v3 [, scope])``, where:
99
Éric Araujoc4d7d8c2011-11-29 16:46:38 +0100100 - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`,
101 or :const:`TIPC_ADDR_ID`.
102 - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, and
103 :const:`TIPC_NODE_SCOPE`.
104 - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000105 the port identifier, and *v3* should be 0.
106
Éric Araujoc4d7d8c2011-11-29 16:46:38 +0100107 If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2*
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000108 is the lower port number, and *v3* is the upper port number.
109
Éric Araujoc4d7d8c2011-11-29 16:46:38 +0100110 If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000111 reference, and *v3* should be set to 0.
112
Charles-François Natali47413c12011-10-06 19:47:44 +0200113- A tuple ``(interface, )`` is used for the :const:`AF_CAN` address family,
114 where *interface* is a string representing a network interface name like
115 ``'can0'``. The network interface name ``''`` can be used to receive packets
116 from all network interfaces of this family.
117
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -0400118 - :const:`CAN_ISOTP` protocol require a tuple ``(interface, rx_addr, tx_addr)``
119 where both additional parameters are unsigned long integer that represent a
120 CAN identifier (standard or extended).
karl ding360371f2020-04-29 15:31:19 -0700121 - :const:`CAN_J1939` protocol require a tuple ``(interface, name, pgn, addr)``
122 where additional parameters are 64-bit unsigned integer representing the
123 ECU name, a 32-bit unsigned integer representing the Parameter Group Number
124 (PGN), and an 8-bit integer representing the address.
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -0400125
Martin v. Löwis9d6c6692012-02-03 17:44:58 +0100126- A string or a tuple ``(id, unit)`` is used for the :const:`SYSPROTO_CONTROL`
127 protocol of the :const:`PF_SYSTEM` family. The string is the name of a
128 kernel control using a dynamically-assigned ID. The tuple can be used if ID
129 and unit number of the kernel control are known or if a registered ID is
130 used.
131
132 .. versionadded:: 3.3
133
Martin Panterd1a98582015-09-09 06:47:58 +0000134- :const:`AF_BLUETOOTH` supports the following protocols and address
135 formats:
136
137 - :const:`BTPROTO_L2CAP` accepts ``(bdaddr, psm)`` where ``bdaddr`` is
138 the Bluetooth address as a string and ``psm`` is an integer.
139
140 - :const:`BTPROTO_RFCOMM` accepts ``(bdaddr, channel)`` where ``bdaddr``
141 is the Bluetooth address as a string and ``channel`` is an integer.
142
143 - :const:`BTPROTO_HCI` accepts ``(device_id,)`` where ``device_id`` is
144 either an integer or a string with the Bluetooth address of the
145 interface. (This depends on your OS; NetBSD and DragonFlyBSD expect
146 a Bluetooth address while everything else expects an integer.)
147
148 .. versionchanged:: 3.2
149 NetBSD and DragonFlyBSD support added.
150
151 - :const:`BTPROTO_SCO` accepts ``bdaddr`` where ``bdaddr`` is a
Martin Panterd8302622015-09-11 02:23:41 +0000152 :class:`bytes` object containing the Bluetooth address in a
Martin Panterd1a98582015-09-09 06:47:58 +0000153 string format. (ex. ``b'12:23:34:45:56:67'``) This protocol is not
154 supported under FreeBSD.
155
Christian Heimesdffa3942016-09-05 23:54:41 +0200156- :const:`AF_ALG` is a Linux-only socket based interface to Kernel
157 cryptography. An algorithm socket is configured with a tuple of two to four
158 elements ``(type, name [, feat [, mask]])``, where:
159
160 - *type* is the algorithm type as string, e.g. ``aead``, ``hash``,
Christian Heimes8c21ab02016-09-06 00:07:02 +0200161 ``skcipher`` or ``rng``.
Christian Heimesdffa3942016-09-05 23:54:41 +0200162
163 - *name* is the algorithm name and operation mode as string, e.g.
164 ``sha256``, ``hmac(sha256)``, ``cbc(aes)`` or ``drbg_nopr_ctr_aes256``.
165
166 - *feat* and *mask* are unsigned 32bit integers.
167
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400168 .. availability:: Linux 2.6.38, some algorithm types require more recent Kernels.
Christian Heimesdffa3942016-09-05 23:54:41 +0200169
170 .. versionadded:: 3.6
171
caaveryeffc12f2017-09-06 18:18:10 -0400172- :const:`AF_VSOCK` allows communication between virtual machines and
173 their hosts. The sockets are represented as a ``(CID, port)`` tuple
174 where the context ID or CID and port are integers.
175
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400176 .. availability:: Linux >= 4.8 QEMU >= 2.8 ESX >= 4.0 ESX Workstation >= 6.5.
caaveryeffc12f2017-09-06 18:18:10 -0400177
178 .. versionadded:: 3.7
179
Cheryl Sabella731ff682018-09-11 20:32:15 -0400180- :const:`AF_PACKET` is a low-level interface directly to network devices.
181 The packets are represented by the tuple
182 ``(ifname, proto[, pkttype[, hatype[, addr]]])`` where:
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000183
Cheryl Sabella731ff682018-09-11 20:32:15 -0400184 - *ifname* - String specifying the device name.
185 - *proto* - An in network-byte-order integer specifying the Ethernet
186 protocol number.
187 - *pkttype* - Optional integer specifying the packet type:
188
189 - ``PACKET_HOST`` (the default) - Packet addressed to the local host.
190 - ``PACKET_BROADCAST`` - Physical-layer broadcast packet.
191 - ``PACKET_MULTIHOST`` - Packet sent to a physical-layer multicast address.
192 - ``PACKET_OTHERHOST`` - Packet to some other host that has been caught by
193 a device driver in promiscuous mode.
194 - ``PACKET_OUTGOING`` - Packet originating from the local host that is
195 looped back to a packet socket.
196 - *hatype* - Optional integer specifying the ARP hardware address type.
197 - *addr* - Optional bytes-like object specifying the hardware physical
198 address, whose interpretation depends on the device.
Georg Brandl116aa622007-08-15 14:28:22 +0000199
Bjorn Anderssonbb816512018-09-26 06:47:52 -0700200- :const:`AF_QIPCRTR` is a Linux-only socket based interface for communicating
201 with services running on co-processors in Qualcomm platforms. The address
202 family is represented as a ``(node, port)`` tuple where the *node* and *port*
203 are non-negative integers.
204
Tal Einatf55c64c2018-09-27 00:20:38 +0300205 .. versionadded:: 3.8
Bjorn Anderssonbb816512018-09-26 06:47:52 -0700206
Gabe Appleton2ac3bab2019-06-24 02:58:56 -0700207- :const:`IPPROTO_UDPLITE` is a variant of UDP which allows you to specify
208 what portion of a packet is covered with the checksum. It adds two socket
209 options that you can change.
210 ``self.setsockopt(IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, length)`` will
211 change what portion of outgoing packets are covered by the checksum and
212 ``self.setsockopt(IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, length)`` will
213 filter out packets which cover too little of their data. In both cases
214 ``length`` should be in ``range(8, 2**16, 8)``.
215
216 Such a socket should be constructed with
217 ``socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE)`` for IPv4 or
218 ``socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDPLITE)`` for IPv6.
219
220 .. availability:: Linux >= 2.6.20, FreeBSD >= 10.1-RELEASE
221
222 .. versionadded:: 3.9
223
Georg Brandl116aa622007-08-15 14:28:22 +0000224If you use a hostname in the *host* portion of IPv4/v6 socket address, the
225program may show a nondeterministic behavior, as Python uses the first address
226returned from the DNS resolution. The socket address will be resolved
227differently into an actual IPv4/v6 address, depending on the results from DNS
228resolution and/or the host configuration. For deterministic behavior use a
229numeric address in *host* portion.
230
Georg Brandl116aa622007-08-15 14:28:22 +0000231All errors raise exceptions. The normal exceptions for invalid argument types
Antoine Pitrou5574c302011-10-12 17:53:43 +0200232and out-of-memory conditions can be raised; starting from Python 3.3, errors
233related to socket or address semantics raise :exc:`OSError` or one of its
234subclasses (they used to raise :exc:`socket.error`).
Georg Brandl116aa622007-08-15 14:28:22 +0000235
Georg Brandl8569e582010-05-19 20:57:08 +0000236Non-blocking mode is supported through :meth:`~socket.setblocking`. A
237generalization of this based on timeouts is supported through
238:meth:`~socket.settimeout`.
Georg Brandl116aa622007-08-15 14:28:22 +0000239
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000240
241Module contents
242---------------
243
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100244The module :mod:`socket` exports the following elements.
Georg Brandl116aa622007-08-15 14:28:22 +0000245
246
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100247Exceptions
248^^^^^^^^^^
249
Georg Brandl116aa622007-08-15 14:28:22 +0000250.. exception:: error
251
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200252 A deprecated alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000253
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200254 .. versionchanged:: 3.3
255 Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000256
257
258.. exception:: herror
259
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200260 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000261 address-related errors, i.e. for functions that use *h_errno* in the POSIX
262 C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
263 The accompanying value is a pair ``(h_errno, string)`` representing an
264 error returned by a library call. *h_errno* is a numeric value, while
265 *string* represents the description of *h_errno*, as returned by the
266 :c:func:`hstrerror` C function.
Georg Brandl116aa622007-08-15 14:28:22 +0000267
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200268 .. versionchanged:: 3.3
269 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000270
271.. exception:: gaierror
272
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200273 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000274 address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
275 The accompanying value is a pair ``(error, string)`` representing an error
276 returned by a library call. *string* represents the description of
277 *error*, as returned by the :c:func:`gai_strerror` C function. The
278 numeric *error* value will match one of the :const:`EAI_\*` constants
279 defined in this module.
Georg Brandl116aa622007-08-15 14:28:22 +0000280
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200281 .. versionchanged:: 3.3
282 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000283
284.. exception:: timeout
285
Christian Heimes03c8ddd2020-11-20 09:26:07 +0100286 A deprecated alias of :exc:`TimeoutError`.
287
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200288 A subclass of :exc:`OSError`, this exception is raised when a timeout
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000289 occurs on a socket which has had timeouts enabled via a prior call to
290 :meth:`~socket.settimeout` (or implicitly through
291 :func:`~socket.setdefaulttimeout`). The accompanying value is a string
292 whose value is currently always "timed out".
Georg Brandl116aa622007-08-15 14:28:22 +0000293
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200294 .. versionchanged:: 3.3
295 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000296
Christian Heimes03c8ddd2020-11-20 09:26:07 +0100297 .. versionchanged:: 3.10
298 This class was made an alias of :exc:`TimeoutError`.
299
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100300
301Constants
302^^^^^^^^^
303
Ethan Furman7184bac2014-10-14 18:56:53 -0700304 The AF_* and SOCK_* constants are now :class:`AddressFamily` and
305 :class:`SocketKind` :class:`.IntEnum` collections.
306
307 .. versionadded:: 3.4
308
Georg Brandl116aa622007-08-15 14:28:22 +0000309.. data:: AF_UNIX
310 AF_INET
311 AF_INET6
312
313 These constants represent the address (and protocol) families, used for the
Ezio Melottic048d982013-04-17 04:10:26 +0300314 first argument to :func:`.socket`. If the :const:`AF_UNIX` constant is not
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000315 defined then this protocol is unsupported. More constants may be available
316 depending on the system.
Georg Brandl116aa622007-08-15 14:28:22 +0000317
318
319.. data:: SOCK_STREAM
320 SOCK_DGRAM
321 SOCK_RAW
322 SOCK_RDM
323 SOCK_SEQPACKET
324
325 These constants represent the socket types, used for the second argument to
Ezio Melottic048d982013-04-17 04:10:26 +0300326 :func:`.socket`. More constants may be available depending on the system.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000327 (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
328 useful.)
Georg Brandl116aa622007-08-15 14:28:22 +0000329
Antoine Pitroub1c54962010-10-14 15:05:38 +0000330.. data:: SOCK_CLOEXEC
331 SOCK_NONBLOCK
332
333 These two constants, if defined, can be combined with the socket types and
334 allow you to set some flags atomically (thus avoiding possible race
335 conditions and the need for separate calls).
336
337 .. seealso::
338
339 `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
340 for a more thorough explanation.
341
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400342 .. availability:: Linux >= 2.6.27.
Antoine Pitroub1c54962010-10-14 15:05:38 +0000343
344 .. versionadded:: 3.2
Georg Brandl116aa622007-08-15 14:28:22 +0000345
346.. data:: SO_*
347 SOMAXCONN
348 MSG_*
349 SOL_*
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000350 SCM_*
Georg Brandl116aa622007-08-15 14:28:22 +0000351 IPPROTO_*
352 IPPORT_*
353 INADDR_*
354 IP_*
355 IPV6_*
356 EAI_*
357 AI_*
358 NI_*
359 TCP_*
360
361 Many constants of these forms, documented in the Unix documentation on sockets
362 and/or the IP protocol, are also defined in the socket module. They are
363 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
364 methods of socket objects. In most cases, only those symbols that are defined
365 in the Unix header files are defined; for a few symbols, default values are
366 provided.
367
R David Murraybdfa0eb2016-08-23 21:12:40 -0400368 .. versionchanged:: 3.6
Victor Stinner01f5ae72017-01-23 12:30:00 +0100369 ``SO_DOMAIN``, ``SO_PROTOCOL``, ``SO_PEERSEC``, ``SO_PASSSEC``,
370 ``TCP_USER_TIMEOUT``, ``TCP_CONGESTION`` were added.
R David Murraybdfa0eb2016-08-23 21:12:40 -0400371
animalize19e7d482018-02-27 02:10:36 +0800372 .. versionchanged:: 3.6.5
373 On Windows, ``TCP_FASTOPEN``, ``TCP_KEEPCNT`` appear if run-time Windows
374 supports.
375
Nathaniel J. Smith1e2147b2017-03-22 20:56:55 -0700376 .. versionchanged:: 3.7
377 ``TCP_NOTSENT_LOWAT`` was added.
378
animalize19e7d482018-02-27 02:10:36 +0800379 On Windows, ``TCP_KEEPIDLE``, ``TCP_KEEPINTVL`` appear if run-time Windows
380 supports.
381
Miss Islington (bot)28fe0152021-06-20 13:36:21 -0700382 .. versionchanged:: 3.10
383 ``IP_RECVTOS`` was added.
384
Charles-François Natali47413c12011-10-06 19:47:44 +0200385.. data:: AF_CAN
386 PF_CAN
387 SOL_CAN_*
388 CAN_*
389
390 Many constants of these forms, documented in the Linux documentation, are
391 also defined in the socket module.
392
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400393 .. availability:: Linux >= 2.6.25.
Charles-François Natali47413c12011-10-06 19:47:44 +0200394
395 .. versionadded:: 3.3
396
Charles-François Natali773e42d2013-02-05 19:42:01 +0100397.. data:: CAN_BCM
398 CAN_BCM_*
399
400 CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol.
401 Broadcast manager constants, documented in the Linux documentation, are also
402 defined in the socket module.
403
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400404 .. availability:: Linux >= 2.6.25.
Charles-François Natali773e42d2013-02-05 19:42:01 +0100405
karl ding31c4fd22019-07-31 01:47:16 -0700406 .. note::
407 The :data:`CAN_BCM_CAN_FD_FRAME` flag is only available on Linux >= 4.8.
408
Charles-François Natali773e42d2013-02-05 19:42:01 +0100409 .. versionadded:: 3.4
Charles-François Natali47413c12011-10-06 19:47:44 +0200410
Larry Hastingsa6cc5512015-04-13 17:48:40 -0400411.. data:: CAN_RAW_FD_FRAMES
412
413 Enables CAN FD support in a CAN_RAW socket. This is disabled by default.
414 This allows your application to send both CAN and CAN FD frames; however,
karl ding1b05aa22019-05-28 11:35:26 -0700415 you must accept both CAN and CAN FD frames when reading from the socket.
Larry Hastingsa6cc5512015-04-13 17:48:40 -0400416
417 This constant is documented in the Linux documentation.
418
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400419 .. availability:: Linux >= 3.6.
Larry Hastingsa6cc5512015-04-13 17:48:40 -0400420
421 .. versionadded:: 3.5
422
Zackery Spytz97e0de02020-04-09 06:03:49 -0600423.. data:: CAN_RAW_JOIN_FILTERS
424
425 Joins the applied CAN filters such that only CAN frames that match all
426 given CAN filters are passed to user space.
427
428 This constant is documented in the Linux documentation.
429
430 .. availability:: Linux >= 4.1.
431
432 .. versionadded:: 3.9
433
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -0400434.. data:: CAN_ISOTP
435
436 CAN_ISOTP, in the CAN protocol family, is the ISO-TP (ISO 15765-2) protocol.
437 ISO-TP constants, documented in the Linux documentation.
438
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400439 .. availability:: Linux >= 2.6.25.
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -0400440
441 .. versionadded:: 3.7
442
karl ding360371f2020-04-29 15:31:19 -0700443.. data:: CAN_J1939
444
445 CAN_J1939, in the CAN protocol family, is the SAE J1939 protocol.
446 J1939 constants, documented in the Linux documentation.
447
448 .. availability:: Linux >= 5.4.
449
450 .. versionadded:: 3.9
451
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -0400452
Cheryl Sabella731ff682018-09-11 20:32:15 -0400453.. data:: AF_PACKET
454 PF_PACKET
455 PACKET_*
456
457 Many constants of these forms, documented in the Linux documentation, are
458 also defined in the socket module.
459
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400460 .. availability:: Linux >= 2.2.
Cheryl Sabella731ff682018-09-11 20:32:15 -0400461
462
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100463.. data:: AF_RDS
464 PF_RDS
465 SOL_RDS
466 RDS_*
467
468 Many constants of these forms, documented in the Linux documentation, are
469 also defined in the socket module.
470
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400471 .. availability:: Linux >= 2.6.30.
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100472
473 .. versionadded:: 3.3
474
475
Steve Dowerea93ac02016-06-17 12:52:18 -0700476.. data:: SIO_RCVALL
477 SIO_KEEPALIVE_VALS
478 SIO_LOOPBACK_FAST_PATH
Christian Heimesfaf2f632008-01-06 16:59:19 +0000479 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000480
Christian Heimesfaf2f632008-01-06 16:59:19 +0000481 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300482 :meth:`~socket.socket.ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000483
Steve Dowerea93ac02016-06-17 12:52:18 -0700484 .. versionchanged:: 3.6
485 ``SIO_LOOPBACK_FAST_PATH`` was added.
486
Georg Brandl116aa622007-08-15 14:28:22 +0000487
Christian Heimes043d6f62008-01-07 17:19:16 +0000488.. data:: TIPC_*
489
490 TIPC related constants, matching the ones exported by the C socket API. See
491 the TIPC documentation for more information.
492
Christian Heimesdffa3942016-09-05 23:54:41 +0200493.. data:: AF_ALG
494 SOL_ALG
495 ALG_*
496
497 Constants for Linux Kernel cryptography.
498
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400499 .. availability:: Linux >= 2.6.38.
Christian Heimesdffa3942016-09-05 23:54:41 +0200500
501 .. versionadded:: 3.6
502
caaveryeffc12f2017-09-06 18:18:10 -0400503
504.. data:: AF_VSOCK
505 IOCTL_VM_SOCKETS_GET_LOCAL_CID
506 VMADDR*
507 SO_VM*
508
509 Constants for Linux host/guest communication.
510
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400511 .. availability:: Linux >= 4.8.
caaveryeffc12f2017-09-06 18:18:10 -0400512
513 .. versionadded:: 3.7
514
Giampaolo Rodola'80e1c432013-05-21 21:02:04 +0200515.. data:: AF_LINK
516
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400517 .. availability:: BSD, OSX.
Giampaolo Rodola'80e1c432013-05-21 21:02:04 +0200518
519 .. versionadded:: 3.4
Christian Heimes043d6f62008-01-07 17:19:16 +0000520
Georg Brandl116aa622007-08-15 14:28:22 +0000521.. data:: has_ipv6
522
523 This constant contains a boolean value which indicates if IPv6 is supported on
524 this platform.
525
Martin Panterea7266d2015-09-11 23:14:57 +0000526.. data:: BDADDR_ANY
527 BDADDR_LOCAL
528
529 These are string constants containing Bluetooth addresses with special
530 meanings. For example, :const:`BDADDR_ANY` can be used to indicate
531 any address when specifying the binding socket with
532 :const:`BTPROTO_RFCOMM`.
533
534.. data:: HCI_FILTER
535 HCI_TIME_STAMP
536 HCI_DATA_DIR
537
538 For use with :const:`BTPROTO_HCI`. :const:`HCI_FILTER` is not
539 available for NetBSD or DragonFlyBSD. :const:`HCI_TIME_STAMP` and
540 :const:`HCI_DATA_DIR` are not available for FreeBSD, NetBSD, or
541 DragonFlyBSD.
Georg Brandl116aa622007-08-15 14:28:22 +0000542
Bjorn Anderssonbb816512018-09-26 06:47:52 -0700543.. data:: AF_QIPCRTR
544
545 Constant for Qualcomm's IPC router protocol, used to communicate with
546 service providing remote processors.
547
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400548 .. availability:: Linux >= 4.7.
Bjorn Anderssonbb816512018-09-26 06:47:52 -0700549
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100550Functions
551^^^^^^^^^
552
553Creating sockets
554''''''''''''''''
555
556The following functions all create :ref:`socket objects <socket-objects>`.
557
558
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100559.. function:: socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100560
561 Create a new socket using the given address family, socket type and protocol
562 number. The address family should be :const:`AF_INET` (the default),
Cheryl Sabella731ff682018-09-11 20:32:15 -0400563 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN`, :const:`AF_PACKET`,
564 or :const:`AF_RDS`. The socket type should be :const:`SOCK_STREAM` (the
565 default), :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other
566 ``SOCK_`` constants. The protocol number is usually zero and may be omitted
567 or in the case where the address family is :const:`AF_CAN` the protocol
karl ding360371f2020-04-29 15:31:19 -0700568 should be one of :const:`CAN_RAW`, :const:`CAN_BCM`, :const:`CAN_ISOTP` or
569 :const:`CAN_J1939`.
Christian Heimesb6e43af2018-01-29 22:37:58 +0100570
571 If *fileno* is specified, the values for *family*, *type*, and *proto* are
572 auto-detected from the specified file descriptor. Auto-detection can be
573 overruled by calling the function with explicit *family*, *type*, or *proto*
574 arguments. This only affects how Python represents e.g. the return value
575 of :meth:`socket.getpeername` but not the actual OS resource. Unlike
576 :func:`socket.fromfd`, *fileno* will return the same socket and not a
577 duplicate. This may help close a detached socket using
Berker Peksag24a61092015-10-08 06:34:01 +0300578 :meth:`socket.close()`.
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100579
580 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100581
Steve Dower44f91c32019-06-27 10:47:59 -0700582 .. audit-event:: socket.__new__ self,family,type,protocol socket.socket
Steve Dowerb82e17e2019-05-23 08:45:22 -0700583
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100584 .. versionchanged:: 3.3
585 The AF_CAN family was added.
586 The AF_RDS family was added.
587
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100588 .. versionchanged:: 3.4
589 The CAN_BCM protocol was added.
590
591 .. versionchanged:: 3.4
592 The returned socket is now non-inheritable.
593
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -0400594 .. versionchanged:: 3.7
595 The CAN_ISOTP protocol was added.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100596
Yury Selivanov98181422017-12-18 20:02:54 -0500597 .. versionchanged:: 3.7
598 When :const:`SOCK_NONBLOCK` or :const:`SOCK_CLOEXEC`
599 bit flags are applied to *type* they are cleared, and
600 :attr:`socket.type` will not reflect them. They are still passed
Oz N Tiramfad8b562020-01-16 00:55:13 +0100601 to the underlying system `socket()` call. Therefore,
602
603 ::
Yury Selivanov98181422017-12-18 20:02:54 -0500604
605 sock = socket.socket(
606 socket.AF_INET,
607 socket.SOCK_STREAM | socket.SOCK_NONBLOCK)
608
609 will still create a non-blocking socket on OSes that support
610 ``SOCK_NONBLOCK``, but ``sock.type`` will be set to
611 ``socket.SOCK_STREAM``.
612
karl ding360371f2020-04-29 15:31:19 -0700613 .. versionchanged:: 3.9
614 The CAN_J1939 protocol was added.
615
Rui Cunhab05b48d2021-03-20 22:04:56 +0000616 .. versionchanged:: 3.10
617 The IPPROTO_MPTCP protocol was added.
618
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100619.. function:: socketpair([family[, type[, proto]]])
620
621 Build a pair of connected socket objects using the given address family, socket
622 type, and protocol number. Address family, socket type, and protocol number are
623 as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
624 if defined on the platform; otherwise, the default is :const:`AF_INET`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100625
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100626 The newly created sockets are :ref:`non-inheritable <fd_inheritance>`.
627
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100628 .. versionchanged:: 3.2
629 The returned socket objects now support the whole socket API, rather
630 than a subset.
631
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100632 .. versionchanged:: 3.4
633 The returned sockets are now non-inheritable.
634
Charles-François Natali98c745a2014-10-14 21:22:44 +0100635 .. versionchanged:: 3.5
636 Windows support added.
637
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100638
Gregory P. Smithb4066372010-01-03 03:28:29 +0000639.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000640
Antoine Pitrou889a5102012-01-12 08:06:19 +0100641 Connect to a TCP service listening on the Internet *address* (a 2-tuple
642 ``(host, port)``), and return the socket object. This is a higher-level
643 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
644 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
645 and then try to connect to all possible addresses in turn until a
646 connection succeeds. This makes it easy to write clients that are
647 compatible to both IPv4 and IPv6.
648
649 Passing the optional *timeout* parameter will set the timeout on the
650 socket instance before attempting to connect. If no *timeout* is
651 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000652 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000653
Gregory P. Smithb4066372010-01-03 03:28:29 +0000654 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
655 socket to bind to as its source address before connecting. If host or port
656 are '' or 0 respectively the OS default behavior will be used.
657
658 .. versionchanged:: 3.2
659 *source_address* was added.
660
Giampaolo Rodola8702b672019-04-09 04:42:06 +0200661.. function:: create_server(address, *, family=AF_INET, backlog=None, reuse_port=False, dualstack_ipv6=False)
Giampaolo Rodolaeb7e29f2019-04-09 00:34:02 +0200662
663 Convenience function which creates a TCP socket bound to *address* (a 2-tuple
664 ``(host, port)``) and return the socket object.
665
666 *family* should be either :data:`AF_INET` or :data:`AF_INET6`.
667 *backlog* is the queue size passed to :meth:`socket.listen`; when ``0``
668 a default reasonable value is chosen.
669 *reuse_port* dictates whether to set the :data:`SO_REUSEPORT` socket option.
670
671 If *dualstack_ipv6* is true and the platform supports it the socket will
672 be able to accept both IPv4 and IPv6 connections, else it will raise
673 :exc:`ValueError`. Most POSIX platforms and Windows are supposed to support
674 this functionality.
675 When this functionality is enabled the address returned by
676 :meth:`socket.getpeername` when an IPv4 connection occurs will be an IPv6
677 address represented as an IPv4-mapped IPv6 address.
678 If *dualstack_ipv6* is false it will explicitly disable this functionality
679 on platforms that enable it by default (e.g. Linux).
680 This parameter can be used in conjunction with :func:`has_dualstack_ipv6`:
681
682 ::
683
684 import socket
685
686 addr = ("", 8080) # all interfaces, port 8080
687 if socket.has_dualstack_ipv6():
688 s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True)
689 else:
690 s = socket.create_server(addr)
691
692 .. note::
693 On POSIX platforms the :data:`SO_REUSEADDR` socket option is set in order to
694 immediately reuse previous sockets which were bound on the same *address*
695 and remained in TIME_WAIT state.
696
697 .. versionadded:: 3.8
698
699.. function:: has_dualstack_ipv6()
700
701 Return ``True`` if the platform supports creating a TCP socket which can
702 handle both IPv4 and IPv6 connections.
703
704 .. versionadded:: 3.8
Georg Brandl116aa622007-08-15 14:28:22 +0000705
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100706.. function:: fromfd(fd, family, type, proto=0)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100707
708 Duplicate the file descriptor *fd* (an integer as returned by a file object's
709 :meth:`fileno` method) and build a socket object from the result. Address
710 family, socket type and protocol number are as for the :func:`.socket` function
711 above. The file descriptor should refer to a socket, but this is not checked ---
712 subsequent operations on the object may fail if the file descriptor is invalid.
713 This function is rarely needed, but can be used to get or set socket options on
714 a socket passed to a program as standard input or output (such as a server
715 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
716
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100717 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
718
719 .. versionchanged:: 3.4
720 The returned socket is now non-inheritable.
721
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100722
723.. function:: fromshare(data)
724
725 Instantiate a socket from data obtained from the :meth:`socket.share`
726 method. The socket is assumed to be in blocking mode.
727
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400728 .. availability:: Windows.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100729
730 .. versionadded:: 3.3
731
732
733.. data:: SocketType
734
735 This is a Python type object that represents the socket object type. It is the
736 same as ``type(socket(...))``.
737
738
739Other functions
740'''''''''''''''
741
742The :mod:`socket` module also offers various network-related services:
743
744
Christian Heimesd0e31b92018-01-27 09:54:13 +0100745.. function:: close(fd)
746
747 Close a socket file descriptor. This is like :func:`os.close`, but for
748 sockets. On some platforms (most noticeable Windows) :func:`os.close`
749 does not work for socket file descriptors.
750
751 .. versionadded:: 3.7
752
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000753.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000754
Antoine Pitrou91035972010-05-31 17:04:40 +0000755 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
756 all the necessary arguments for creating a socket connected to that service.
757 *host* is a domain name, a string representation of an IPv4/v6 address
758 or ``None``. *port* is a string service name such as ``'http'``, a numeric
759 port number or ``None``. By passing ``None`` as the value of *host*
760 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000761
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000762 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000763 in order to narrow the list of addresses returned. Passing zero as a
764 value for each of these arguments selects the full range of results.
765 The *flags* argument can be one or several of the ``AI_*`` constants,
766 and will influence how results are computed and returned.
767 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
768 and will raise an error if *host* is a domain name.
769
770 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000771
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000772 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000773
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000774 In these tuples, *family*, *type*, *proto* are all integers and are
Ezio Melottic048d982013-04-17 04:10:26 +0300775 meant to be passed to the :func:`.socket` function. *canonname* will be
Antoine Pitrou91035972010-05-31 17:04:40 +0000776 a string representing the canonical name of the *host* if
777 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
778 will be empty. *sockaddr* is a tuple describing a socket address, whose
779 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
opavlyuk21da76d2020-02-26 16:33:57 +0200780 :const:`AF_INET`, a ``(address, port, flowinfo, scope_id)`` 4-tuple for
Antoine Pitrou91035972010-05-31 17:04:40 +0000781 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
782 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000783
Steve Dower44f91c32019-06-27 10:47:59 -0700784 .. audit-event:: socket.getaddrinfo host,port,family,type,protocol socket.getaddrinfo
Steve Dowerb82e17e2019-05-23 08:45:22 -0700785
Antoine Pitrou91035972010-05-31 17:04:40 +0000786 The following example fetches address information for a hypothetical TCP
Ned Deily11cf4f62015-06-01 21:19:30 -0700787 connection to ``example.org`` on port 80 (results may differ on your
Antoine Pitrou91035972010-05-31 17:04:40 +0000788 system if IPv6 isn't enabled)::
789
Ned Deily11cf4f62015-06-01 21:19:30 -0700790 >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
Ethan Furman9bf7c2d2021-07-03 21:08:42 -0700791 [(<AddressFamily.AF_INET6: 10>, <AddressFamily.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700792 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
Ethan Furman9bf7c2d2021-07-03 21:08:42 -0700793 (<AddressFamily.AF_INET: 2>, <AddressFamily.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700794 6, '', ('93.184.216.34', 80))]
Georg Brandl116aa622007-08-15 14:28:22 +0000795
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000796 .. versionchanged:: 3.2
Andrew Kuchling46ff4ee2014-02-15 16:39:37 -0500797 parameters can now be passed using keyword arguments.
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000798
Коренберг Марк7766b962018-02-13 00:47:42 +0500799 .. versionchanged:: 3.7
800 for IPv6 multicast addresses, string representing an address will not
opavlyuk21da76d2020-02-26 16:33:57 +0200801 contain ``%scope_id`` part.
Коренберг Марк7766b962018-02-13 00:47:42 +0500802
Georg Brandl116aa622007-08-15 14:28:22 +0000803.. function:: getfqdn([name])
804
805 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
806 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000807 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000808 host, if available. The first name which includes a period is selected. In
809 case no fully qualified domain name is available, the hostname as returned by
810 :func:`gethostname` is returned.
811
Georg Brandl116aa622007-08-15 14:28:22 +0000812
813.. function:: gethostbyname(hostname)
814
815 Translate a host name to IPv4 address format. The IPv4 address is returned as a
816 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
817 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
818 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
819 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
820
Steve Dower44f91c32019-06-27 10:47:59 -0700821 .. audit-event:: socket.gethostbyname hostname socket.gethostbyname
Steve Dowerb82e17e2019-05-23 08:45:22 -0700822
Georg Brandl116aa622007-08-15 14:28:22 +0000823
824.. function:: gethostbyname_ex(hostname)
825
826 Translate a host name to IPv4 address format, extended interface. Return a
827 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
828 host name responding to the given *ip_address*, *aliaslist* is a (possibly
829 empty) list of alternative host names for the same address, and *ipaddrlist* is
830 a list of IPv4 addresses for the same interface on the same host (often but not
831 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
832 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
833 stack support.
834
Steve Dower44f91c32019-06-27 10:47:59 -0700835 .. audit-event:: socket.gethostbyname hostname socket.gethostbyname_ex
Steve Dowerb82e17e2019-05-23 08:45:22 -0700836
Georg Brandl116aa622007-08-15 14:28:22 +0000837
838.. function:: gethostname()
839
840 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000841 interpreter is currently executing.
842
Steve Dower44f91c32019-06-27 10:47:59 -0700843 .. audit-event:: socket.gethostname "" socket.gethostname
Steve Dowerb82e17e2019-05-23 08:45:22 -0700844
Benjamin Peterson65676e42008-11-05 21:42:45 +0000845 Note: :func:`gethostname` doesn't always return the fully qualified domain
Berker Peksag2a8baed2015-05-19 01:31:00 +0300846 name; use :func:`getfqdn` for that.
Georg Brandl116aa622007-08-15 14:28:22 +0000847
848
849.. function:: gethostbyaddr(ip_address)
850
851 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
852 primary host name responding to the given *ip_address*, *aliaslist* is a
853 (possibly empty) list of alternative host names for the same address, and
854 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
855 host (most likely containing only a single address). To find the fully qualified
856 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
857 both IPv4 and IPv6.
858
Steve Dower44f91c32019-06-27 10:47:59 -0700859 .. audit-event:: socket.gethostbyaddr ip_address socket.gethostbyaddr
Steve Dowerb82e17e2019-05-23 08:45:22 -0700860
Georg Brandl116aa622007-08-15 14:28:22 +0000861
862.. function:: getnameinfo(sockaddr, flags)
863
864 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
865 on the settings of *flags*, the result can contain a fully-qualified domain name
866 or numeric address representation in *host*. Similarly, *port* can contain a
867 string port name or a numeric port number.
868
opavlyuk21da76d2020-02-26 16:33:57 +0200869 For IPv6 addresses, ``%scope_id`` is appended to the host part if *sockaddr*
870 contains meaningful *scope_id*. Usually this happens for multicast addresses.
Georg Brandl116aa622007-08-15 14:28:22 +0000871
Emmanuel Arias3993ccb2019-04-11 18:13:37 -0300872 For more information about *flags* you can consult :manpage:`getnameinfo(3)`.
873
Steve Dower44f91c32019-06-27 10:47:59 -0700874 .. audit-event:: socket.getnameinfo sockaddr socket.getnameinfo
Steve Dowerb82e17e2019-05-23 08:45:22 -0700875
Georg Brandl116aa622007-08-15 14:28:22 +0000876.. function:: getprotobyname(protocolname)
877
878 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
Ezio Melottic048d982013-04-17 04:10:26 +0300879 suitable for passing as the (optional) third argument to the :func:`.socket`
Georg Brandl116aa622007-08-15 14:28:22 +0000880 function. This is usually only needed for sockets opened in "raw" mode
881 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
882 automatically if the protocol is omitted or zero.
883
884
885.. function:: getservbyname(servicename[, protocolname])
886
887 Translate an Internet service name and protocol name to a port number for that
888 service. The optional protocol name, if given, should be ``'tcp'`` or
889 ``'udp'``, otherwise any protocol will match.
890
Steve Dower44f91c32019-06-27 10:47:59 -0700891 .. audit-event:: socket.getservbyname servicename,protocolname socket.getservbyname
Steve Dowerb82e17e2019-05-23 08:45:22 -0700892
Georg Brandl116aa622007-08-15 14:28:22 +0000893
894.. function:: getservbyport(port[, protocolname])
895
896 Translate an Internet port number and protocol name to a service name for that
897 service. The optional protocol name, if given, should be ``'tcp'`` or
898 ``'udp'``, otherwise any protocol will match.
899
Steve Dower44f91c32019-06-27 10:47:59 -0700900 .. audit-event:: socket.getservbyport port,protocolname socket.getservbyport
Steve Dowerb82e17e2019-05-23 08:45:22 -0700901
Georg Brandl116aa622007-08-15 14:28:22 +0000902
Georg Brandl116aa622007-08-15 14:28:22 +0000903.. function:: ntohl(x)
904
905 Convert 32-bit positive integers from network to host byte order. On machines
906 where the host byte order is the same as network byte order, this is a no-op;
907 otherwise, it performs a 4-byte swap operation.
908
909
910.. function:: ntohs(x)
911
912 Convert 16-bit positive integers from network to host byte order. On machines
913 where the host byte order is the same as network byte order, this is a no-op;
914 otherwise, it performs a 2-byte swap operation.
915
Erlend Egeberg Aaslandf4936ad2020-12-31 14:16:50 +0100916 .. versionchanged:: 3.10
917 Raises :exc:`OverflowError` if *x* does not fit in a 16-bit unsigned
918 integer.
Serhiy Storchaka6a7d3482016-10-02 12:34:40 +0300919
Georg Brandl116aa622007-08-15 14:28:22 +0000920
921.. function:: htonl(x)
922
923 Convert 32-bit positive integers from host to network byte order. On machines
924 where the host byte order is the same as network byte order, this is a no-op;
925 otherwise, it performs a 4-byte swap operation.
926
927
928.. function:: htons(x)
929
930 Convert 16-bit positive integers from host to network byte order. On machines
931 where the host byte order is the same as network byte order, this is a no-op;
932 otherwise, it performs a 2-byte swap operation.
933
Erlend Egeberg Aaslandf4936ad2020-12-31 14:16:50 +0100934 .. versionchanged:: 3.10
935 Raises :exc:`OverflowError` if *x* does not fit in a 16-bit unsigned
936 integer.
Serhiy Storchaka6a7d3482016-10-02 12:34:40 +0300937
Georg Brandl116aa622007-08-15 14:28:22 +0000938
939.. function:: inet_aton(ip_string)
940
941 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000942 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000943 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000944 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000945 for the 32-bit packed binary this function returns.
946
Georg Brandlf5123ef2009-06-04 10:28:36 +0000947 :func:`inet_aton` also accepts strings with less than three dots; see the
948 Unix manual page :manpage:`inet(3)` for details.
949
Georg Brandl116aa622007-08-15 14:28:22 +0000950 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200951 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000952 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000953
Georg Brandl5f259722009-05-04 20:50:30 +0000954 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000955 instead for IPv4/v6 dual stack support.
956
957
958.. function:: inet_ntoa(packed_ip)
959
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200960 Convert a 32-bit packed IPv4 address (a :term:`bytes-like object` four
961 bytes in length) to its standard dotted-quad string representation (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000962 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000963 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000964 is the C type for the 32-bit packed binary data this function takes as an
965 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000966
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000967 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200968 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000969 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000970 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000971
Georg Brandl8c16cb92016-02-25 20:17:45 +0100972 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200973 Writable :term:`bytes-like object` is now accepted.
974
Georg Brandl116aa622007-08-15 14:28:22 +0000975
976.. function:: inet_pton(address_family, ip_string)
977
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000978 Convert an IP address from its family-specific string format to a packed,
979 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000980 calls for an object of type :c:type:`struct in_addr` (similar to
981 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000982
983 Supported values for *address_family* are currently :const:`AF_INET` and
984 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200985 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000986 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000987 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000988
Cheryl Sabella2d6097d2018-10-12 10:55:20 -0400989 .. availability:: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000990
R David Murray6c501012014-03-07 21:22:39 -0500991 .. versionchanged:: 3.4
992 Windows support added
993
Georg Brandl116aa622007-08-15 14:28:22 +0000994
995.. function:: inet_ntop(address_family, packed_ip)
996
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200997 Convert a packed IP address (a :term:`bytes-like object` of some number of
998 bytes) to its standard, family-specific string representation (for
999 example, ``'7.10.0.5'`` or ``'5aef:2b::8'``).
1000 :func:`inet_ntop` is useful when a library or network protocol returns an
1001 object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`) or
1002 :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +00001003
1004 Supported values for *address_family* are currently :const:`AF_INET` and
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +02001005 :const:`AF_INET6`. If the bytes object *packed_ip* is not the correct
1006 length for the specified address family, :exc:`ValueError` will be raised.
Antoine Pitrou5574c302011-10-12 17:53:43 +02001007 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +00001008
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001009 .. availability:: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +00001010
R David Murray6c501012014-03-07 21:22:39 -05001011 .. versionchanged:: 3.4
1012 Windows support added
1013
Georg Brandl8c16cb92016-02-25 20:17:45 +01001014 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +02001015 Writable :term:`bytes-like object` is now accepted.
1016
Georg Brandl116aa622007-08-15 14:28:22 +00001017
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001018..
1019 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
1020 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
1021 interface, in which struct msghdr has no msg_control or
1022 msg_controllen members, is not currently supported.
1023
1024.. function:: CMSG_LEN(length)
1025
1026 Return the total length, without trailing padding, of an ancillary
1027 data item with associated data of the given *length*. This value
1028 can often be used as the buffer size for :meth:`~socket.recvmsg` to
1029 receive a single item of ancillary data, but :rfc:`3542` requires
1030 portable applications to use :func:`CMSG_SPACE` and thus include
1031 space for padding, even when the item will be the last in the
1032 buffer. Raises :exc:`OverflowError` if *length* is outside the
1033 permissible range of values.
1034
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001035 .. availability:: most Unix platforms, possibly others.
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001036
1037 .. versionadded:: 3.3
1038
1039
1040.. function:: CMSG_SPACE(length)
1041
1042 Return the buffer size needed for :meth:`~socket.recvmsg` to
1043 receive an ancillary data item with associated data of the given
1044 *length*, along with any trailing padding. The buffer space needed
1045 to receive multiple items is the sum of the :func:`CMSG_SPACE`
1046 values for their associated data lengths. Raises
1047 :exc:`OverflowError` if *length* is outside the permissible range
1048 of values.
1049
1050 Note that some systems might support ancillary data without
1051 providing this function. Also note that setting the buffer size
1052 using the results of this function may not precisely limit the
1053 amount of ancillary data that can be received, since additional
1054 data may be able to fit into the padding area.
1055
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001056 .. availability:: most Unix platforms, possibly others.
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001057
1058 .. versionadded:: 3.3
1059
1060
Georg Brandl116aa622007-08-15 14:28:22 +00001061.. function:: getdefaulttimeout()
1062
Ezio Melotti388c9452011-08-14 08:28:57 +03001063 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +00001064 of ``None`` indicates that new socket objects have no timeout. When the socket
1065 module is first imported, the default is ``None``.
1066
Georg Brandl116aa622007-08-15 14:28:22 +00001067
1068.. function:: setdefaulttimeout(timeout)
1069
Ezio Melotti388c9452011-08-14 08:28:57 +03001070 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001071 the socket module is first imported, the default is ``None``. See
1072 :meth:`~socket.settimeout` for possible values and their respective
1073 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +00001074
Georg Brandl116aa622007-08-15 14:28:22 +00001075
Antoine Pitrou061cfb52011-02-28 22:25:22 +00001076.. function:: sethostname(name)
1077
Serhiy Storchakad65c9492015-11-02 14:10:23 +02001078 Set the machine's hostname to *name*. This will raise an
Antoine Pitrou5574c302011-10-12 17:53:43 +02001079 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +00001080
Steve Dower44f91c32019-06-27 10:47:59 -07001081 .. audit-event:: socket.sethostname name socket.sethostname
Steve Dowerb82e17e2019-05-23 08:45:22 -07001082
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001083 .. availability:: Unix.
Antoine Pitrou061cfb52011-02-28 22:25:22 +00001084
1085 .. versionadded:: 3.3
1086
1087
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07001088.. function:: if_nameindex()
1089
Gregory P. Smithb6471db2011-05-22 22:47:55 -07001090 Return a list of network interface information
1091 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +02001092 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07001093
Zackery Spytz8f96c9f2019-05-29 15:02:37 -06001094 .. availability:: Unix, Windows.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07001095
1096 .. versionadded:: 3.3
1097
Zackery Spytz8f96c9f2019-05-29 15:02:37 -06001098 .. versionchanged:: 3.8
1099 Windows support was added.
1100
Jakub Stasiakf85658a2020-10-20 00:30:58 +02001101 .. note::
1102
1103 On Windows network interfaces have different names in different contexts
1104 (all names are examples):
1105
1106 * UUID: ``{FB605B73-AAC2-49A6-9A2F-25416AEA0573}``
1107 * name: ``ethernet_32770``
1108 * friendly name: ``vEthernet (nat)``
1109 * description: ``Hyper-V Virtual Ethernet Adapter``
1110
1111 This function returns names of the second form from the list, ``ethernet_32770``
1112 in this example case.
1113
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07001114
1115.. function:: if_nametoindex(if_name)
1116
Gregory P. Smithb6471db2011-05-22 22:47:55 -07001117 Return a network interface index number corresponding to an
1118 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +02001119 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07001120
Zackery Spytz8f96c9f2019-05-29 15:02:37 -06001121 .. availability:: Unix, Windows.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07001122
1123 .. versionadded:: 3.3
1124
Zackery Spytz8f96c9f2019-05-29 15:02:37 -06001125 .. versionchanged:: 3.8
1126 Windows support was added.
1127
Jakub Stasiakf85658a2020-10-20 00:30:58 +02001128 .. seealso::
1129 "Interface name" is a name as documented in :func:`if_nameindex`.
1130
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07001131
1132.. function:: if_indextoname(if_index)
1133
Serhiy Storchakad65c9492015-11-02 14:10:23 +02001134 Return a network interface name corresponding to an
Gregory P. Smithb6471db2011-05-22 22:47:55 -07001135 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +02001136 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07001137
Zackery Spytz8f96c9f2019-05-29 15:02:37 -06001138 .. availability:: Unix, Windows.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07001139
1140 .. versionadded:: 3.3
1141
Zackery Spytz8f96c9f2019-05-29 15:02:37 -06001142 .. versionchanged:: 3.8
1143 Windows support was added.
1144
Jakub Stasiakf85658a2020-10-20 00:30:58 +02001145 .. seealso::
1146 "Interface name" is a name as documented in :func:`if_nameindex`.
1147
Gregory P. Smith5ed2e772011-05-15 00:26:45 -07001148
Saiyang Gou660592f2021-04-21 21:08:46 -07001149.. function:: send_fds(sock, buffers, fds[, flags[, address]])
1150
1151 Send the list of file descriptors *fds* over an :const:`AF_UNIX` socket *sock*.
1152 The *fds* parameter is a sequence of file descriptors.
1153 Consult :meth:`sendmsg` for the documentation of these parameters.
1154
1155 .. availability:: Unix supporting :meth:`~socket.sendmsg` and :const:`SCM_RIGHTS` mechanism.
1156
1157 .. versionadded:: 3.9
1158
1159
1160.. function:: recv_fds(sock, bufsize, maxfds[, flags])
1161
1162 Receive up to *maxfds* file descriptors from an :const:`AF_UNIX` socket *sock*.
1163 Return ``(msg, list(fds), flags, addr)``.
1164 Consult :meth:`recvmsg` for the documentation of these parameters.
1165
1166 .. availability:: Unix supporting :meth:`~socket.recvmsg` and :const:`SCM_RIGHTS` mechanism.
1167
1168 .. versionadded:: 3.9
1169
1170 .. note::
1171
1172 Any truncated integers at the end of the list of file descriptors.
1173
1174
Georg Brandl116aa622007-08-15 14:28:22 +00001175.. _socket-objects:
1176
1177Socket Objects
1178--------------
1179
Antoine Pitroue3658a72013-12-04 21:02:42 +01001180Socket objects have the following methods. Except for
1181:meth:`~socket.makefile`, these correspond to Unix system calls applicable
1182to sockets.
Georg Brandl116aa622007-08-15 14:28:22 +00001183
Martin Pantere37fc182016-04-24 04:24:36 +00001184.. versionchanged:: 3.2
1185 Support for the :term:`context manager` protocol was added. Exiting the
1186 context manager is equivalent to calling :meth:`~socket.close`.
1187
Georg Brandl116aa622007-08-15 14:28:22 +00001188
1189.. method:: socket.accept()
1190
1191 Accept a connection. The socket must be bound to an address and listening for
1192 connections. The return value is a pair ``(conn, address)`` where *conn* is a
1193 *new* socket object usable to send and receive data on the connection, and
1194 *address* is the address bound to the socket on the other end of the connection.
1195
Victor Stinnerdaf45552013-08-28 00:53:59 +02001196 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
1197
1198 .. versionchanged:: 3.4
1199 The socket is now non-inheritable.
1200
Victor Stinner708d9ba2015-04-02 11:49:42 +02001201 .. versionchanged:: 3.5
1202 If the system call is interrupted and the signal handler does not raise
1203 an exception, the method now retries the system call instead of raising
1204 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1205
Georg Brandl116aa622007-08-15 14:28:22 +00001206
1207.. method:: socket.bind(address)
1208
1209 Bind the socket to *address*. The socket must not already be bound. (The format
1210 of *address* depends on the address family --- see above.)
1211
Steve Dower44f91c32019-06-27 10:47:59 -07001212 .. audit-event:: socket.bind self,address socket.socket.bind
Georg Brandl116aa622007-08-15 14:28:22 +00001213
1214.. method:: socket.close()
1215
Antoine Pitroue3658a72013-12-04 21:02:42 +01001216 Mark the socket closed. The underlying system resource (e.g. a file
1217 descriptor) is also closed when all file objects from :meth:`makefile()`
1218 are closed. Once that happens, all future operations on the socket
1219 object will fail. The remote end will receive no more data (after
1220 queued data is flushed).
1221
1222 Sockets are automatically closed when they are garbage-collected, but
1223 it is recommended to :meth:`close` them explicitly, or to use a
1224 :keyword:`with` statement around them.
Georg Brandl116aa622007-08-15 14:28:22 +00001225
Martin Panter50ab1a32016-04-11 00:38:12 +00001226 .. versionchanged:: 3.6
1227 :exc:`OSError` is now raised if an error occurs when the underlying
1228 :c:func:`close` call is made.
1229
Antoine Pitrou4a67a462011-01-02 22:06:53 +00001230 .. note::
Éric Araujofa5e6e42014-03-12 19:51:00 -04001231
Antoine Pitrou4a67a462011-01-02 22:06:53 +00001232 :meth:`close()` releases the resource associated with a connection but
1233 does not necessarily close the connection immediately. If you want
1234 to close the connection in a timely fashion, call :meth:`shutdown()`
1235 before :meth:`close()`.
1236
Georg Brandl116aa622007-08-15 14:28:22 +00001237
1238.. method:: socket.connect(address)
1239
1240 Connect to a remote socket at *address*. (The format of *address* depends on the
1241 address family --- see above.)
1242
Victor Stinner81c41db2015-04-02 11:50:57 +02001243 If the connection is interrupted by a signal, the method waits until the
Christian Heimes03c8ddd2020-11-20 09:26:07 +01001244 connection completes, or raise a :exc:`TimeoutError` on timeout, if the
Victor Stinner81c41db2015-04-02 11:50:57 +02001245 signal handler doesn't raise an exception and the socket is blocking or has
1246 a timeout. For non-blocking sockets, the method raises an
1247 :exc:`InterruptedError` exception if the connection is interrupted by a
1248 signal (or the exception raised by the signal handler).
1249
Steve Dower44f91c32019-06-27 10:47:59 -07001250 .. audit-event:: socket.connect self,address socket.socket.connect
Steve Dowerb82e17e2019-05-23 08:45:22 -07001251
Victor Stinner81c41db2015-04-02 11:50:57 +02001252 .. versionchanged:: 3.5
1253 The method now waits until the connection completes instead of raising an
1254 :exc:`InterruptedError` exception if the connection is interrupted by a
1255 signal, the signal handler doesn't raise an exception and the socket is
1256 blocking or has a timeout (see the :pep:`475` for the rationale).
1257
Georg Brandl116aa622007-08-15 14:28:22 +00001258
1259.. method:: socket.connect_ex(address)
1260
1261 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +00001262 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +00001263 problems, such as "host not found," can still raise exceptions). The error
1264 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +00001265 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +00001266 connects.
1267
Steve Dower44f91c32019-06-27 10:47:59 -07001268 .. audit-event:: socket.connect self,address socket.socket.connect_ex
Georg Brandl116aa622007-08-15 14:28:22 +00001269
Antoine Pitrou6e451df2010-08-09 20:39:54 +00001270.. method:: socket.detach()
1271
1272 Put the socket object into closed state without actually closing the
1273 underlying file descriptor. The file descriptor is returned, and can
1274 be reused for other purposes.
1275
1276 .. versionadded:: 3.2
1277
1278
Victor Stinnerdaf45552013-08-28 00:53:59 +02001279.. method:: socket.dup()
1280
1281 Duplicate the socket.
1282
1283 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
1284
1285 .. versionchanged:: 3.4
1286 The socket is now non-inheritable.
1287
1288
Georg Brandl116aa622007-08-15 14:28:22 +00001289.. method:: socket.fileno()
1290
Kushal Das89beb272016-06-04 10:20:12 -07001291 Return the socket's file descriptor (a small integer), or -1 on failure. This
1292 is useful with :func:`select.select`.
Georg Brandl116aa622007-08-15 14:28:22 +00001293
1294 Under Windows the small integer returned by this method cannot be used where a
1295 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
1296 this limitation.
1297
Victor Stinnerdaf45552013-08-28 00:53:59 +02001298.. method:: socket.get_inheritable()
1299
1300 Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1301 descriptor or socket's handle: ``True`` if the socket can be inherited in
1302 child processes, ``False`` if it cannot.
1303
1304 .. versionadded:: 3.4
1305
1306
Georg Brandl116aa622007-08-15 14:28:22 +00001307.. method:: socket.getpeername()
1308
1309 Return the remote address to which the socket is connected. This is useful to
1310 find out the port number of a remote IPv4/v6 socket, for instance. (The format
1311 of the address returned depends on the address family --- see above.) On some
1312 systems this function is not supported.
1313
1314
1315.. method:: socket.getsockname()
1316
1317 Return the socket's own address. This is useful to find out the port number of
1318 an IPv4/v6 socket, for instance. (The format of the address returned depends on
1319 the address family --- see above.)
1320
1321
1322.. method:: socket.getsockopt(level, optname[, buflen])
1323
1324 Return the value of the given socket option (see the Unix man page
1325 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
1326 are defined in this module. If *buflen* is absent, an integer option is assumed
1327 and its integer value is returned by the function. If *buflen* is present, it
1328 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001329 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +00001330 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001331 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +00001332
Georg Brandl48310cd2009-01-03 21:18:54 +00001333
Yury Selivanovf11b4602018-01-28 17:27:38 -05001334.. method:: socket.getblocking()
1335
1336 Return ``True`` if socket is in blocking mode, ``False`` if in
1337 non-blocking.
1338
1339 This is equivalent to checking ``socket.gettimeout() == 0``.
1340
1341 .. versionadded:: 3.7
1342
1343
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001344.. method:: socket.gettimeout()
1345
Ezio Melotti388c9452011-08-14 08:28:57 +03001346 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001347 or ``None`` if no timeout is set. This reflects the last call to
1348 :meth:`setblocking` or :meth:`settimeout`.
1349
1350
Christian Heimesfaf2f632008-01-06 16:59:19 +00001351.. method:: socket.ioctl(control, option)
1352
Georg Brandl48310cd2009-01-03 21:18:54 +00001353 :platform: Windows
1354
Christian Heimes679db4a2008-01-18 09:56:22 +00001355 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +00001356 interface. Please refer to the `Win32 documentation
Georg Brandl5d941342016-02-26 19:37:12 +01001357 <https://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
Georg Brandl8569e582010-05-19 20:57:08 +00001358 information.
Georg Brandl48310cd2009-01-03 21:18:54 +00001359
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +00001360 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
1361 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001362
Steve Dowerea93ac02016-06-17 12:52:18 -07001363 Currently only the following control codes are supported:
1364 ``SIO_RCVALL``, ``SIO_KEEPALIVE_VALS``, and ``SIO_LOOPBACK_FAST_PATH``.
1365
1366 .. versionchanged:: 3.6
1367 ``SIO_LOOPBACK_FAST_PATH`` was added.
1368
Charles-François Natali644b8f52014-05-22 19:45:39 +01001369.. method:: socket.listen([backlog])
Georg Brandl116aa622007-08-15 14:28:22 +00001370
Charles-François Natali644b8f52014-05-22 19:45:39 +01001371 Enable a server to accept connections. If *backlog* is specified, it must
1372 be at least 0 (if it is lower, it is set to 0); it specifies the number of
1373 unaccepted connections that the system will allow before refusing new
1374 connections. If not specified, a default reasonable value is chosen.
Georg Brandl116aa622007-08-15 14:28:22 +00001375
Charles-François Natali644b8f52014-05-22 19:45:39 +01001376 .. versionchanged:: 3.5
1377 The *backlog* parameter is now optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001378
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001379.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
1380 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001381
1382 .. index:: single: I/O control; buffering
1383
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001384 Return a :term:`file object` associated with the socket. The exact returned
1385 type depends on the arguments given to :meth:`makefile`. These arguments are
Berker Peksag3fe64d02016-02-18 17:34:00 +02001386 interpreted the same way as by the built-in :func:`open` function, except
1387 the only supported *mode* values are ``'r'`` (default), ``'w'`` and ``'b'``.
Georg Brandl116aa622007-08-15 14:28:22 +00001388
Antoine Pitroue3658a72013-12-04 21:02:42 +01001389 The socket must be in blocking mode; it can have a timeout, but the file
Martin Panter7462b6492015-11-02 03:37:02 +00001390 object's internal buffer may end up in an inconsistent state if a timeout
Antoine Pitroue3658a72013-12-04 21:02:42 +01001391 occurs.
1392
1393 Closing the file object returned by :meth:`makefile` won't close the
1394 original socket unless all other file objects have been closed and
1395 :meth:`socket.close` has been called on the socket object.
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001396
1397 .. note::
1398
1399 On Windows, the file-like object created by :meth:`makefile` cannot be
1400 used where a file object with a file descriptor is expected, such as the
1401 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +00001402
Georg Brandl116aa622007-08-15 14:28:22 +00001403
1404.. method:: socket.recv(bufsize[, flags])
1405
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001406 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +00001407 data received. The maximum amount of data to be received at once is specified
1408 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
1409 the optional argument *flags*; it defaults to zero.
1410
1411 .. note::
1412
1413 For best match with hardware and network realities, the value of *bufsize*
1414 should be a relatively small power of 2, for example, 4096.
1415
Victor Stinner708d9ba2015-04-02 11:49:42 +02001416 .. versionchanged:: 3.5
1417 If the system call is interrupted and the signal handler does not raise
1418 an exception, the method now retries the system call instead of raising
1419 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1420
Georg Brandl116aa622007-08-15 14:28:22 +00001421
1422.. method:: socket.recvfrom(bufsize[, flags])
1423
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001424 Receive data from the socket. The return value is a pair ``(bytes, address)``
1425 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +00001426 address of the socket sending the data. See the Unix manual page
1427 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
1428 to zero. (The format of *address* depends on the address family --- see above.)
1429
Victor Stinner708d9ba2015-04-02 11:49:42 +02001430 .. versionchanged:: 3.5
1431 If the system call is interrupted and the signal handler does not raise
1432 an exception, the method now retries the system call instead of raising
1433 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1434
Коренберг Марк7766b962018-02-13 00:47:42 +05001435 .. versionchanged:: 3.7
1436 For multicast IPv6 address, first item of *address* does not contain
opavlyuk21da76d2020-02-26 16:33:57 +02001437 ``%scope_id`` part anymore. In order to get full IPv6 address use
Коренберг Марк7766b962018-02-13 00:47:42 +05001438 :func:`getnameinfo`.
Georg Brandl116aa622007-08-15 14:28:22 +00001439
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001440.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
1441
1442 Receive normal data (up to *bufsize* bytes) and ancillary data from
1443 the socket. The *ancbufsize* argument sets the size in bytes of
1444 the internal buffer used to receive the ancillary data; it defaults
1445 to 0, meaning that no ancillary data will be received. Appropriate
1446 buffer sizes for ancillary data can be calculated using
1447 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
1448 into the buffer might be truncated or discarded. The *flags*
1449 argument defaults to 0 and has the same meaning as for
1450 :meth:`recv`.
1451
1452 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
1453 address)``. The *data* item is a :class:`bytes` object holding the
1454 non-ancillary data received. The *ancdata* item is a list of zero
1455 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
1456 the ancillary data (control messages) received: *cmsg_level* and
1457 *cmsg_type* are integers specifying the protocol level and
1458 protocol-specific type respectively, and *cmsg_data* is a
1459 :class:`bytes` object holding the associated data. The *msg_flags*
1460 item is the bitwise OR of various flags indicating conditions on
1461 the received message; see your system documentation for details.
1462 If the receiving socket is unconnected, *address* is the address of
1463 the sending socket, if available; otherwise, its value is
1464 unspecified.
1465
1466 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
1467 pass file descriptors between processes over an :const:`AF_UNIX`
1468 socket. When this facility is used (it is often restricted to
1469 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
1470 ancillary data, items of the form ``(socket.SOL_SOCKET,
1471 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
1472 representing the new file descriptors as a binary array of the
1473 native C :c:type:`int` type. If :meth:`recvmsg` raises an
1474 exception after the system call returns, it will first attempt to
1475 close any file descriptors received via this mechanism.
1476
1477 Some systems do not indicate the truncated length of ancillary data
1478 items which have been only partially received. If an item appears
1479 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
1480 a :exc:`RuntimeWarning`, and will return the part of it which is
1481 inside the buffer provided it has not been truncated before the
1482 start of its associated data.
1483
1484 On systems which support the :const:`SCM_RIGHTS` mechanism, the
1485 following function will receive up to *maxfds* file descriptors,
1486 returning the message data and a list containing the descriptors
1487 (while ignoring unexpected conditions such as unrelated control
1488 messages being received). See also :meth:`sendmsg`. ::
1489
1490 import socket, array
1491
1492 def recv_fds(sock, msglen, maxfds):
1493 fds = array.array("i") # Array of ints
1494 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1495 for cmsg_level, cmsg_type, cmsg_data in ancdata:
David Coles386d00c2019-11-25 22:31:09 -08001496 if cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS:
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001497 # Append data, ignoring any truncated integers at the end.
David Coles386d00c2019-11-25 22:31:09 -08001498 fds.frombytes(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001499 return msg, list(fds)
1500
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001501 .. availability:: most Unix platforms, possibly others.
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001502
1503 .. versionadded:: 3.3
1504
Victor Stinner708d9ba2015-04-02 11:49:42 +02001505 .. versionchanged:: 3.5
1506 If the system call is interrupted and the signal handler does not raise
1507 an exception, the method now retries the system call instead of raising
1508 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1509
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001510
1511.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1512
1513 Receive normal data and ancillary data from the socket, behaving as
1514 :meth:`recvmsg` would, but scatter the non-ancillary data into a
1515 series of buffers instead of returning a new bytes object. The
1516 *buffers* argument must be an iterable of objects that export
1517 writable buffers (e.g. :class:`bytearray` objects); these will be
1518 filled with successive chunks of the non-ancillary data until it
1519 has all been written or there are no more buffers. The operating
1520 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1521 on the number of buffers that can be used. The *ancbufsize* and
1522 *flags* arguments have the same meaning as for :meth:`recvmsg`.
1523
1524 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1525 address)``, where *nbytes* is the total number of bytes of
1526 non-ancillary data written into the buffers, and *ancdata*,
1527 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1528
1529 Example::
1530
1531 >>> import socket
1532 >>> s1, s2 = socket.socketpair()
1533 >>> b1 = bytearray(b'----')
1534 >>> b2 = bytearray(b'0123456789')
1535 >>> b3 = bytearray(b'--------------')
1536 >>> s1.send(b'Mary had a little lamb')
1537 22
1538 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1539 (22, [], 0, None)
1540 >>> [b1, b2, b3]
1541 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1542
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001543 .. availability:: most Unix platforms, possibly others.
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001544
1545 .. versionadded:: 3.3
1546
1547
Georg Brandl116aa622007-08-15 14:28:22 +00001548.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1549
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001550 Receive data from the socket, writing it into *buffer* instead of creating a
1551 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +00001552 the number of bytes received and *address* is the address of the socket sending
1553 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
1554 optional argument *flags*; it defaults to zero. (The format of *address*
1555 depends on the address family --- see above.)
1556
Georg Brandl116aa622007-08-15 14:28:22 +00001557
1558.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1559
1560 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001561 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +00001562 receive up to the size available in the given buffer. Returns the number of
1563 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
1564 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001565
Georg Brandl116aa622007-08-15 14:28:22 +00001566
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001567.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001568
1569 Send data to the socket. The socket must be connected to a remote socket. The
1570 optional *flags* argument has the same meaning as for :meth:`recv` above.
1571 Returns the number of bytes sent. Applications are responsible for checking that
1572 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001573 application needs to attempt delivery of the remaining data. For further
1574 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +00001575
Victor Stinner708d9ba2015-04-02 11:49:42 +02001576 .. versionchanged:: 3.5
1577 If the system call is interrupted and the signal handler does not raise
1578 an exception, the method now retries the system call instead of raising
1579 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1580
Georg Brandl116aa622007-08-15 14:28:22 +00001581
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001582.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001583
1584 Send data to the socket. The socket must be connected to a remote socket. The
1585 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001586 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001587 either all data has been sent or an error occurs. ``None`` is returned on
1588 success. On error, an exception is raised, and there is no way to determine how
1589 much data, if any, was successfully sent.
1590
Victor Stinner708d9ba2015-04-02 11:49:42 +02001591 .. versionchanged:: 3.5
Martin Pantereb995702016-07-28 01:11:04 +00001592 The socket timeout is no more reset each time data is sent successfully.
Victor Stinner8912d142015-04-06 23:16:34 +02001593 The socket timeout is now the maximum total duration to send all data.
1594
1595 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001596 If the system call is interrupted and the signal handler does not raise
1597 an exception, the method now retries the system call instead of raising
1598 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1599
Georg Brandl116aa622007-08-15 14:28:22 +00001600
Ezio Melottie0add762012-09-14 06:32:35 +03001601.. method:: socket.sendto(bytes, address)
1602 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001603
1604 Send data to the socket. The socket should not be connected to a remote socket,
1605 since the destination socket is specified by *address*. The optional *flags*
1606 argument has the same meaning as for :meth:`recv` above. Return the number of
1607 bytes sent. (The format of *address* depends on the address family --- see
1608 above.)
1609
Steve Dower44f91c32019-06-27 10:47:59 -07001610 .. audit-event:: socket.sendto self,address socket.socket.sendto
Steve Dowerb82e17e2019-05-23 08:45:22 -07001611
Victor Stinner708d9ba2015-04-02 11:49:42 +02001612 .. versionchanged:: 3.5
1613 If the system call is interrupted and the signal handler does not raise
1614 an exception, the method now retries the system call instead of raising
1615 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1616
Georg Brandl116aa622007-08-15 14:28:22 +00001617
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001618.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1619
1620 Send normal and ancillary data to the socket, gathering the
1621 non-ancillary data from a series of buffers and concatenating it
1622 into a single message. The *buffers* argument specifies the
Serhiy Storchakab757c832014-12-05 22:25:22 +02001623 non-ancillary data as an iterable of
1624 :term:`bytes-like objects <bytes-like object>`
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001625 (e.g. :class:`bytes` objects); the operating system may set a limit
1626 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1627 that can be used. The *ancdata* argument specifies the ancillary
1628 data (control messages) as an iterable of zero or more tuples
1629 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1630 *cmsg_type* are integers specifying the protocol level and
1631 protocol-specific type respectively, and *cmsg_data* is a
Serhiy Storchakab757c832014-12-05 22:25:22 +02001632 bytes-like object holding the associated data. Note that
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001633 some systems (in particular, systems without :func:`CMSG_SPACE`)
1634 might support sending only one control message per call. The
1635 *flags* argument defaults to 0 and has the same meaning as for
1636 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1637 destination address for the message. The return value is the
1638 number of bytes of non-ancillary data sent.
1639
1640 The following function sends the list of file descriptors *fds*
1641 over an :const:`AF_UNIX` socket, on systems which support the
1642 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1643
1644 import socket, array
1645
1646 def send_fds(sock, msg, fds):
1647 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1648
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001649 .. availability:: most Unix platforms, possibly others.
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001650
Steve Dower44f91c32019-06-27 10:47:59 -07001651 .. audit-event:: socket.sendmsg self,address socket.socket.sendmsg
Steve Dowerb82e17e2019-05-23 08:45:22 -07001652
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001653 .. versionadded:: 3.3
1654
Victor Stinner708d9ba2015-04-02 11:49:42 +02001655 .. versionchanged:: 3.5
1656 If the system call is interrupted and the signal handler does not raise
1657 an exception, the method now retries the system call instead of raising
1658 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1659
Christian Heimesdffa3942016-09-05 23:54:41 +02001660.. method:: socket.sendmsg_afalg([msg], *, op[, iv[, assoclen[, flags]]])
1661
1662 Specialized version of :meth:`~socket.sendmsg` for :const:`AF_ALG` socket.
1663 Set mode, IV, AEAD associated data length and flags for :const:`AF_ALG` socket.
1664
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001665 .. availability:: Linux >= 2.6.38.
Christian Heimesdffa3942016-09-05 23:54:41 +02001666
1667 .. versionadded:: 3.6
1668
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001669.. method:: socket.sendfile(file, offset=0, count=None)
1670
1671 Send a file until EOF is reached by using high-performance
1672 :mod:`os.sendfile` and return the total number of bytes which were sent.
1673 *file* must be a regular file object opened in binary mode. If
1674 :mod:`os.sendfile` is not available (e.g. Windows) or *file* is not a
1675 regular file :meth:`send` will be used instead. *offset* tells from where to
1676 start reading the file. If specified, *count* is the total number of bytes
1677 to transmit as opposed to sending the file until EOF is reached. File
1678 position is updated on return or also in case of error in which case
1679 :meth:`file.tell() <io.IOBase.tell>` can be used to figure out the number of
Martin Panter8f137832017-01-14 08:24:20 +00001680 bytes which were sent. The socket must be of :const:`SOCK_STREAM` type.
1681 Non-blocking sockets are not supported.
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001682
1683 .. versionadded:: 3.5
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001684
Victor Stinnerdaf45552013-08-28 00:53:59 +02001685.. method:: socket.set_inheritable(inheritable)
1686
1687 Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1688 descriptor or socket's handle.
1689
1690 .. versionadded:: 3.4
1691
1692
Georg Brandl116aa622007-08-15 14:28:22 +00001693.. method:: socket.setblocking(flag)
1694
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001695 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1696 socket is set to non-blocking, else to blocking mode.
1697
1698 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1699
1700 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1701
1702 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001703
Yury Selivanov98181422017-12-18 20:02:54 -05001704 .. versionchanged:: 3.7
1705 The method no longer applies :const:`SOCK_NONBLOCK` flag on
1706 :attr:`socket.type`.
1707
Georg Brandl116aa622007-08-15 14:28:22 +00001708
1709.. method:: socket.settimeout(value)
1710
1711 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001712 nonnegative floating point number expressing seconds, or ``None``.
1713 If a non-zero value is given, subsequent socket operations will raise a
1714 :exc:`timeout` exception if the timeout period *value* has elapsed before
1715 the operation has completed. If zero is given, the socket is put in
1716 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001717
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001718 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001719
Yury Selivanov98181422017-12-18 20:02:54 -05001720 .. versionchanged:: 3.7
1721 The method no longer toggles :const:`SOCK_NONBLOCK` flag on
1722 :attr:`socket.type`.
1723
Georg Brandl116aa622007-08-15 14:28:22 +00001724
Christian Heimesdffa3942016-09-05 23:54:41 +02001725.. method:: socket.setsockopt(level, optname, value: int)
1726.. method:: socket.setsockopt(level, optname, value: buffer)
Victor Stinnerd3ded082020-08-13 21:41:54 +02001727 :noindex:
Christian Heimesdffa3942016-09-05 23:54:41 +02001728.. method:: socket.setsockopt(level, optname, None, optlen: int)
Victor Stinnerd3ded082020-08-13 21:41:54 +02001729 :noindex:
Georg Brandl116aa622007-08-15 14:28:22 +00001730
1731 .. index:: module: struct
1732
1733 Set the value of the given socket option (see the Unix manual page
1734 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
Christian Heimesdffa3942016-09-05 23:54:41 +02001735 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer,
Serhiy Storchaka989db5c2016-10-19 16:37:13 +03001736 ``None`` or a :term:`bytes-like object` representing a buffer. In the later
Christian Heimesdffa3942016-09-05 23:54:41 +02001737 case it is up to the caller to ensure that the bytestring contains the
1738 proper bits (see the optional built-in module :mod:`struct` for a way to
Serhiy Storchakae835b312019-10-30 21:37:16 +02001739 encode C structures as bytestrings). When *value* is set to ``None``,
1740 *optlen* argument is required. It's equivalent to call :c:func:`setsockopt` C
1741 function with ``optval=NULL`` and ``optlen=optlen``.
Christian Heimesdffa3942016-09-05 23:54:41 +02001742
Georg Brandl116aa622007-08-15 14:28:22 +00001743
Georg Brandl8c16cb92016-02-25 20:17:45 +01001744 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +02001745 Writable :term:`bytes-like object` is now accepted.
1746
Christian Heimesdffa3942016-09-05 23:54:41 +02001747 .. versionchanged:: 3.6
1748 setsockopt(level, optname, None, optlen: int) form added.
1749
Georg Brandl116aa622007-08-15 14:28:22 +00001750
1751.. method:: socket.shutdown(how)
1752
1753 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1754 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1755 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001756 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001757
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001758
1759.. method:: socket.share(process_id)
1760
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001761 Duplicate a socket and prepare it for sharing with a target process. The
1762 target process must be provided with *process_id*. The resulting bytes object
1763 can then be passed to the target process using some form of interprocess
1764 communication and the socket can be recreated there using :func:`fromshare`.
1765 Once this method has been called, it is safe to close the socket since
1766 the operating system has already duplicated it for the target process.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001767
Cheryl Sabella2d6097d2018-10-12 10:55:20 -04001768 .. availability:: Windows.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001769
1770 .. versionadded:: 3.3
1771
1772
Georg Brandl8569e582010-05-19 20:57:08 +00001773Note that there are no methods :meth:`read` or :meth:`write`; use
1774:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001775
1776Socket objects also have these (read-only) attributes that correspond to the
Serhiy Storchakaee1b01a2016-12-02 23:13:53 +02001777values given to the :class:`~socket.socket` constructor.
Georg Brandl116aa622007-08-15 14:28:22 +00001778
1779
1780.. attribute:: socket.family
1781
1782 The socket family.
1783
Georg Brandl116aa622007-08-15 14:28:22 +00001784
1785.. attribute:: socket.type
1786
1787 The socket type.
1788
Georg Brandl116aa622007-08-15 14:28:22 +00001789
1790.. attribute:: socket.proto
1791
1792 The socket protocol.
1793
Georg Brandl116aa622007-08-15 14:28:22 +00001794
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001795
1796.. _socket-timeouts:
1797
1798Notes on socket timeouts
1799------------------------
1800
1801A socket object can be in one of three modes: blocking, non-blocking, or
1802timeout. Sockets are by default always created in blocking mode, but this
1803can be changed by calling :func:`setdefaulttimeout`.
1804
1805* In *blocking mode*, operations block until complete or the system returns
1806 an error (such as connection timed out).
1807
1808* In *non-blocking mode*, operations fail (with an error that is unfortunately
1809 system-dependent) if they cannot be completed immediately: functions from the
1810 :mod:`select` can be used to know when and whether a socket is available for
1811 reading or writing.
1812
1813* In *timeout mode*, operations fail if they cannot be completed within the
1814 timeout specified for the socket (they raise a :exc:`timeout` exception)
1815 or if the system returns an error.
1816
1817.. note::
1818 At the operating system level, sockets in *timeout mode* are internally set
1819 in non-blocking mode. Also, the blocking and timeout modes are shared between
1820 file descriptors and socket objects that refer to the same network endpoint.
1821 This implementation detail can have visible consequences if e.g. you decide
1822 to use the :meth:`~socket.fileno()` of a socket.
1823
1824Timeouts and the ``connect`` method
1825^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1826
1827The :meth:`~socket.connect` operation is also subject to the timeout
1828setting, and in general it is recommended to call :meth:`~socket.settimeout`
1829before calling :meth:`~socket.connect` or pass a timeout parameter to
1830:meth:`create_connection`. However, the system network stack may also
1831return a connection timeout error of its own regardless of any Python socket
1832timeout setting.
1833
1834Timeouts and the ``accept`` method
1835^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1836
1837If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1838the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1839behaviour depends on settings of the listening socket:
1840
1841* if the listening socket is in *blocking mode* or in *timeout mode*,
1842 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1843
1844* if the listening socket is in *non-blocking mode*, whether the socket
1845 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1846 is operating system-dependent. If you want to ensure cross-platform
1847 behaviour, it is recommended you manually override this setting.
1848
1849
Georg Brandl116aa622007-08-15 14:28:22 +00001850.. _socket-example:
1851
1852Example
1853-------
1854
1855Here are four minimal example programs using the TCP/IP protocol: a server that
1856echoes all data that it receives back (servicing only one client), and a client
Ezio Melottic048d982013-04-17 04:10:26 +03001857using it. Note that a server must perform the sequence :func:`.socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001858:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1859repeating the :meth:`~socket.accept` to service more than one client), while a
Ezio Melottic048d982013-04-17 04:10:26 +03001860client only needs the sequence :func:`.socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001861note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1862the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001863:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001864
1865The first two examples support IPv4 only. ::
1866
1867 # Echo server program
1868 import socket
1869
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001870 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001871 PORT = 50007 # Arbitrary non-privileged port
Martin Pantere37fc182016-04-24 04:24:36 +00001872 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1873 s.bind((HOST, PORT))
1874 s.listen(1)
1875 conn, addr = s.accept()
1876 with conn:
1877 print('Connected by', addr)
1878 while True:
1879 data = conn.recv(1024)
1880 if not data: break
1881 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001882
1883::
1884
1885 # Echo client program
1886 import socket
1887
1888 HOST = 'daring.cwi.nl' # The remote host
1889 PORT = 50007 # The same port as used by the server
Martin Pantere37fc182016-04-24 04:24:36 +00001890 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1891 s.connect((HOST, PORT))
1892 s.sendall(b'Hello, world')
1893 data = s.recv(1024)
Georg Brandl6911e3c2007-09-04 07:15:32 +00001894 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001895
1896The next two examples are identical to the above two, but support both IPv4 and
1897IPv6. The server side will listen to the first address family available (it
1898should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1899precedence and the server may not accept IPv4 traffic. The client side will try
1900to connect to the all addresses returned as a result of the name resolution, and
1901sends traffic to the first one connected successfully. ::
1902
1903 # Echo server program
1904 import socket
1905 import sys
1906
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001907 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001908 PORT = 50007 # Arbitrary non-privileged port
1909 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001910 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1911 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001912 af, socktype, proto, canonname, sa = res
1913 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001914 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001915 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001916 s = None
1917 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001918 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001919 s.bind(sa)
1920 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001921 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001922 s.close()
1923 s = None
1924 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001925 break
1926 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001927 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001928 sys.exit(1)
1929 conn, addr = s.accept()
Martin Pantere37fc182016-04-24 04:24:36 +00001930 with conn:
1931 print('Connected by', addr)
1932 while True:
1933 data = conn.recv(1024)
1934 if not data: break
1935 conn.send(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001936
1937::
1938
1939 # Echo client program
1940 import socket
1941 import sys
1942
1943 HOST = 'daring.cwi.nl' # The remote host
1944 PORT = 50007 # The same port as used by the server
1945 s = None
1946 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1947 af, socktype, proto, canonname, sa = res
1948 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001949 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001950 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001951 s = None
1952 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001953 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001954 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001955 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001956 s.close()
1957 s = None
1958 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001959 break
1960 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001961 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001962 sys.exit(1)
Martin Pantere37fc182016-04-24 04:24:36 +00001963 with s:
1964 s.sendall(b'Hello, world')
1965 data = s.recv(1024)
Georg Brandl6911e3c2007-09-04 07:15:32 +00001966 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001967
Charles-François Natali47413c12011-10-06 19:47:44 +02001968The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001969sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001970the interface::
1971
1972 import socket
1973
1974 # the public network interface
1975 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001976
Christian Heimesfaf2f632008-01-06 16:59:19 +00001977 # create a raw socket and bind it to the public interface
1978 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1979 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001980
Christian Heimesfaf2f632008-01-06 16:59:19 +00001981 # Include IP headers
1982 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001983
Christian Heimesfaf2f632008-01-06 16:59:19 +00001984 # receive all packages
1985 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001986
Christian Heimesfaf2f632008-01-06 16:59:19 +00001987 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001988 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001989
Christian Heimesc3f30c42008-02-22 16:37:40 +00001990 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001991 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001992
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -04001993The next example shows how to use the socket interface to communicate to a CAN
Charles-François Natali773e42d2013-02-05 19:42:01 +01001994network using the raw socket protocol. To use CAN with the broadcast
1995manager protocol instead, open a socket with::
1996
1997 socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1998
1999After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
Mark Dickinsond80b16d2013-02-10 18:43:16 +00002000can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
Charles-François Natali773e42d2013-02-05 19:42:01 +01002001their counterparts) on the socket object as usual.
2002
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -04002003This last example might require special privileges::
Charles-François Natali47413c12011-10-06 19:47:44 +02002004
2005 import socket
2006 import struct
2007
2008
Georg Brandla673eb82012-03-04 16:17:05 +01002009 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02002010
2011 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02002012 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02002013
2014 def build_can_frame(can_id, data):
2015 can_dlc = len(data)
2016 data = data.ljust(8, b'\x00')
2017 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
2018
2019 def dissect_can_frame(frame):
2020 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
2021 return (can_id, can_dlc, data[:can_dlc])
2022
2023
Georg Brandla673eb82012-03-04 16:17:05 +01002024 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02002025 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
2026 s.bind(('vcan0',))
2027
2028 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02002029 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02002030
2031 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
2032
2033 try:
2034 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02002035 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02002036 print('Error sending CAN frame')
2037
2038 try:
2039 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02002040 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02002041 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00002042
Sandro Tosi172f3742011-09-02 20:06:31 +02002043Running an example several times with too small delay between executions, could
2044lead to this error::
2045
Antoine Pitrou5574c302011-10-12 17:53:43 +02002046 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02002047
2048This is because the previous execution has left the socket in a ``TIME_WAIT``
2049state, and can't be immediately reused.
2050
2051There is a :mod:`socket` flag to set, in order to prevent this,
2052:data:`socket.SO_REUSEADDR`::
2053
2054 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2055 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
2056 s.bind((HOST, PORT))
2057
2058the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
2059``TIME_WAIT`` state, without waiting for its natural timeout to expire.
2060
2061
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00002062.. seealso::
2063
2064 For an introduction to socket programming (in C), see the following papers:
2065
2066 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
2067
2068 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
2069 al,
2070
2071 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
2072 PS1:7 and PS1:8). The platform-specific reference material for the various
2073 socket-related system calls are also a valuable source of information on the
2074 details of socket semantics. For Unix, refer to the manual pages; for Windows,
2075 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
2076 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.