blob: 32e7c5e6c079894695e093ab6fd347cdb35c7298 [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
59 .. 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
Berker Peksag253739d2016-01-30 19:23:29 +020063 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +020064 Writable :term:`bytes-like object` is now accepted.
65
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,
81 scopeid)`` is used, where *flowinfo* and *scopeid* represent the ``sin6_flowinfo``
82 and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C. For
83 :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for
84 backward compatibility. Note, however, omission of *scopeid* can cause problems
85 in manipulating scoped IPv6 addresses.
86
Коренберг Марк7766b962018-02-13 00:47:42 +050087 .. versionchanged:: 3.7
88 For multicast addresses (with *scopeid* meaningful) *address* may not contain
89 ``%scope`` (or ``zone id``) part. This information is superfluous and may
90 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).
121
Martin v. Löwis9d6c6692012-02-03 17:44:58 +0100122- A string or a tuple ``(id, unit)`` is used for the :const:`SYSPROTO_CONTROL`
123 protocol of the :const:`PF_SYSTEM` family. The string is the name of a
124 kernel control using a dynamically-assigned ID. The tuple can be used if ID
125 and unit number of the kernel control are known or if a registered ID is
126 used.
127
128 .. versionadded:: 3.3
129
Martin Panterd1a98582015-09-09 06:47:58 +0000130- :const:`AF_BLUETOOTH` supports the following protocols and address
131 formats:
132
133 - :const:`BTPROTO_L2CAP` accepts ``(bdaddr, psm)`` where ``bdaddr`` is
134 the Bluetooth address as a string and ``psm`` is an integer.
135
136 - :const:`BTPROTO_RFCOMM` accepts ``(bdaddr, channel)`` where ``bdaddr``
137 is the Bluetooth address as a string and ``channel`` is an integer.
138
139 - :const:`BTPROTO_HCI` accepts ``(device_id,)`` where ``device_id`` is
140 either an integer or a string with the Bluetooth address of the
141 interface. (This depends on your OS; NetBSD and DragonFlyBSD expect
142 a Bluetooth address while everything else expects an integer.)
143
144 .. versionchanged:: 3.2
145 NetBSD and DragonFlyBSD support added.
146
147 - :const:`BTPROTO_SCO` accepts ``bdaddr`` where ``bdaddr`` is a
Martin Panterd8302622015-09-11 02:23:41 +0000148 :class:`bytes` object containing the Bluetooth address in a
Martin Panterd1a98582015-09-09 06:47:58 +0000149 string format. (ex. ``b'12:23:34:45:56:67'``) This protocol is not
150 supported under FreeBSD.
151
Christian Heimesdffa3942016-09-05 23:54:41 +0200152- :const:`AF_ALG` is a Linux-only socket based interface to Kernel
153 cryptography. An algorithm socket is configured with a tuple of two to four
154 elements ``(type, name [, feat [, mask]])``, where:
155
156 - *type* is the algorithm type as string, e.g. ``aead``, ``hash``,
Christian Heimes8c21ab02016-09-06 00:07:02 +0200157 ``skcipher`` or ``rng``.
Christian Heimesdffa3942016-09-05 23:54:41 +0200158
159 - *name* is the algorithm name and operation mode as string, e.g.
160 ``sha256``, ``hmac(sha256)``, ``cbc(aes)`` or ``drbg_nopr_ctr_aes256``.
161
162 - *feat* and *mask* are unsigned 32bit integers.
163
164 Availability Linux 2.6.38, some algorithm types require more recent Kernels.
165
166 .. versionadded:: 3.6
167
caaveryeffc12f2017-09-06 18:18:10 -0400168- :const:`AF_VSOCK` allows communication between virtual machines and
169 their hosts. The sockets are represented as a ``(CID, port)`` tuple
170 where the context ID or CID and port are integers.
171
172 Availability: Linux >= 4.8 QEMU >= 2.8 ESX >= 4.0 ESX Workstation >= 6.5
173
174 .. versionadded:: 3.7
175
Cheryl Sabella731ff682018-09-11 20:32:15 -0400176- :const:`AF_PACKET` is a low-level interface directly to network devices.
177 The packets are represented by the tuple
178 ``(ifname, proto[, pkttype[, hatype[, addr]]])`` where:
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000179
Cheryl Sabella731ff682018-09-11 20:32:15 -0400180 - *ifname* - String specifying the device name.
181 - *proto* - An in network-byte-order integer specifying the Ethernet
182 protocol number.
183 - *pkttype* - Optional integer specifying the packet type:
184
185 - ``PACKET_HOST`` (the default) - Packet addressed to the local host.
186 - ``PACKET_BROADCAST`` - Physical-layer broadcast packet.
187 - ``PACKET_MULTIHOST`` - Packet sent to a physical-layer multicast address.
188 - ``PACKET_OTHERHOST`` - Packet to some other host that has been caught by
189 a device driver in promiscuous mode.
190 - ``PACKET_OUTGOING`` - Packet originating from the local host that is
191 looped back to a packet socket.
192 - *hatype* - Optional integer specifying the ARP hardware address type.
193 - *addr* - Optional bytes-like object specifying the hardware physical
194 address, whose interpretation depends on the device.
Georg Brandl116aa622007-08-15 14:28:22 +0000195
Georg Brandl116aa622007-08-15 14:28:22 +0000196If you use a hostname in the *host* portion of IPv4/v6 socket address, the
197program may show a nondeterministic behavior, as Python uses the first address
198returned from the DNS resolution. The socket address will be resolved
199differently into an actual IPv4/v6 address, depending on the results from DNS
200resolution and/or the host configuration. For deterministic behavior use a
201numeric address in *host* portion.
202
Georg Brandl116aa622007-08-15 14:28:22 +0000203All errors raise exceptions. The normal exceptions for invalid argument types
Antoine Pitrou5574c302011-10-12 17:53:43 +0200204and out-of-memory conditions can be raised; starting from Python 3.3, errors
205related to socket or address semantics raise :exc:`OSError` or one of its
206subclasses (they used to raise :exc:`socket.error`).
Georg Brandl116aa622007-08-15 14:28:22 +0000207
Georg Brandl8569e582010-05-19 20:57:08 +0000208Non-blocking mode is supported through :meth:`~socket.setblocking`. A
209generalization of this based on timeouts is supported through
210:meth:`~socket.settimeout`.
Georg Brandl116aa622007-08-15 14:28:22 +0000211
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000212
213Module contents
214---------------
215
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100216The module :mod:`socket` exports the following elements.
Georg Brandl116aa622007-08-15 14:28:22 +0000217
218
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100219Exceptions
220^^^^^^^^^^
221
Georg Brandl116aa622007-08-15 14:28:22 +0000222.. exception:: error
223
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200224 A deprecated alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000225
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200226 .. versionchanged:: 3.3
227 Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000228
229
230.. exception:: herror
231
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200232 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000233 address-related errors, i.e. for functions that use *h_errno* in the POSIX
234 C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
235 The accompanying value is a pair ``(h_errno, string)`` representing an
236 error returned by a library call. *h_errno* is a numeric value, while
237 *string* represents the description of *h_errno*, as returned by the
238 :c:func:`hstrerror` C function.
Georg Brandl116aa622007-08-15 14:28:22 +0000239
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200240 .. versionchanged:: 3.3
241 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000242
243.. exception:: gaierror
244
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200245 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000246 address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
247 The accompanying value is a pair ``(error, string)`` representing an error
248 returned by a library call. *string* represents the description of
249 *error*, as returned by the :c:func:`gai_strerror` C function. The
250 numeric *error* value will match one of the :const:`EAI_\*` constants
251 defined in this module.
Georg Brandl116aa622007-08-15 14:28:22 +0000252
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200253 .. versionchanged:: 3.3
254 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000255
256.. exception:: timeout
257
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200258 A subclass of :exc:`OSError`, this exception is raised when a timeout
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000259 occurs on a socket which has had timeouts enabled via a prior call to
260 :meth:`~socket.settimeout` (or implicitly through
261 :func:`~socket.setdefaulttimeout`). The accompanying value is a string
262 whose value is currently always "timed out".
Georg Brandl116aa622007-08-15 14:28:22 +0000263
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200264 .. versionchanged:: 3.3
265 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000266
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100267
268Constants
269^^^^^^^^^
270
Ethan Furman7184bac2014-10-14 18:56:53 -0700271 The AF_* and SOCK_* constants are now :class:`AddressFamily` and
272 :class:`SocketKind` :class:`.IntEnum` collections.
273
274 .. versionadded:: 3.4
275
Georg Brandl116aa622007-08-15 14:28:22 +0000276.. data:: AF_UNIX
277 AF_INET
278 AF_INET6
279
280 These constants represent the address (and protocol) families, used for the
Ezio Melottic048d982013-04-17 04:10:26 +0300281 first argument to :func:`.socket`. If the :const:`AF_UNIX` constant is not
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000282 defined then this protocol is unsupported. More constants may be available
283 depending on the system.
Georg Brandl116aa622007-08-15 14:28:22 +0000284
285
286.. data:: SOCK_STREAM
287 SOCK_DGRAM
288 SOCK_RAW
289 SOCK_RDM
290 SOCK_SEQPACKET
291
292 These constants represent the socket types, used for the second argument to
Ezio Melottic048d982013-04-17 04:10:26 +0300293 :func:`.socket`. More constants may be available depending on the system.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000294 (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
295 useful.)
Georg Brandl116aa622007-08-15 14:28:22 +0000296
Antoine Pitroub1c54962010-10-14 15:05:38 +0000297.. data:: SOCK_CLOEXEC
298 SOCK_NONBLOCK
299
300 These two constants, if defined, can be combined with the socket types and
301 allow you to set some flags atomically (thus avoiding possible race
302 conditions and the need for separate calls).
303
304 .. seealso::
305
306 `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
307 for a more thorough explanation.
308
309 Availability: Linux >= 2.6.27.
310
311 .. versionadded:: 3.2
Georg Brandl116aa622007-08-15 14:28:22 +0000312
313.. data:: SO_*
314 SOMAXCONN
315 MSG_*
316 SOL_*
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000317 SCM_*
Georg Brandl116aa622007-08-15 14:28:22 +0000318 IPPROTO_*
319 IPPORT_*
320 INADDR_*
321 IP_*
322 IPV6_*
323 EAI_*
324 AI_*
325 NI_*
326 TCP_*
327
328 Many constants of these forms, documented in the Unix documentation on sockets
329 and/or the IP protocol, are also defined in the socket module. They are
330 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
331 methods of socket objects. In most cases, only those symbols that are defined
332 in the Unix header files are defined; for a few symbols, default values are
333 provided.
334
R David Murraybdfa0eb2016-08-23 21:12:40 -0400335 .. versionchanged:: 3.6
Victor Stinner01f5ae72017-01-23 12:30:00 +0100336 ``SO_DOMAIN``, ``SO_PROTOCOL``, ``SO_PEERSEC``, ``SO_PASSSEC``,
337 ``TCP_USER_TIMEOUT``, ``TCP_CONGESTION`` were added.
R David Murraybdfa0eb2016-08-23 21:12:40 -0400338
animalize19e7d482018-02-27 02:10:36 +0800339 .. versionchanged:: 3.6.5
340 On Windows, ``TCP_FASTOPEN``, ``TCP_KEEPCNT`` appear if run-time Windows
341 supports.
342
Nathaniel J. Smith1e2147b2017-03-22 20:56:55 -0700343 .. versionchanged:: 3.7
344 ``TCP_NOTSENT_LOWAT`` was added.
345
animalize19e7d482018-02-27 02:10:36 +0800346 On Windows, ``TCP_KEEPIDLE``, ``TCP_KEEPINTVL`` appear if run-time Windows
347 supports.
348
Charles-François Natali47413c12011-10-06 19:47:44 +0200349.. data:: AF_CAN
350 PF_CAN
351 SOL_CAN_*
352 CAN_*
353
354 Many constants of these forms, documented in the Linux documentation, are
355 also defined in the socket module.
356
357 Availability: Linux >= 2.6.25.
358
359 .. versionadded:: 3.3
360
Charles-François Natali773e42d2013-02-05 19:42:01 +0100361.. data:: CAN_BCM
362 CAN_BCM_*
363
364 CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol.
365 Broadcast manager constants, documented in the Linux documentation, are also
366 defined in the socket module.
367
368 Availability: Linux >= 2.6.25.
369
370 .. versionadded:: 3.4
Charles-François Natali47413c12011-10-06 19:47:44 +0200371
Larry Hastingsa6cc5512015-04-13 17:48:40 -0400372.. data:: CAN_RAW_FD_FRAMES
373
374 Enables CAN FD support in a CAN_RAW socket. This is disabled by default.
375 This allows your application to send both CAN and CAN FD frames; however,
376 you one must accept both CAN and CAN FD frames when reading from the socket.
377
378 This constant is documented in the Linux documentation.
379
380 Availability: Linux >= 3.6.
381
382 .. versionadded:: 3.5
383
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -0400384.. data:: CAN_ISOTP
385
386 CAN_ISOTP, in the CAN protocol family, is the ISO-TP (ISO 15765-2) protocol.
387 ISO-TP constants, documented in the Linux documentation.
388
389 Availability: Linux >= 2.6.25
390
391 .. versionadded:: 3.7
392
393
Cheryl Sabella731ff682018-09-11 20:32:15 -0400394.. data:: AF_PACKET
395 PF_PACKET
396 PACKET_*
397
398 Many constants of these forms, documented in the Linux documentation, are
399 also defined in the socket module.
400
401 Availability: Linux >= 2.2.
402
403
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100404.. data:: AF_RDS
405 PF_RDS
406 SOL_RDS
407 RDS_*
408
409 Many constants of these forms, documented in the Linux documentation, are
410 also defined in the socket module.
411
412 Availability: Linux >= 2.6.30.
413
414 .. versionadded:: 3.3
415
416
Steve Dowerea93ac02016-06-17 12:52:18 -0700417.. data:: SIO_RCVALL
418 SIO_KEEPALIVE_VALS
419 SIO_LOOPBACK_FAST_PATH
Christian Heimesfaf2f632008-01-06 16:59:19 +0000420 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000421
Christian Heimesfaf2f632008-01-06 16:59:19 +0000422 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300423 :meth:`~socket.socket.ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000424
Steve Dowerea93ac02016-06-17 12:52:18 -0700425 .. versionchanged:: 3.6
426 ``SIO_LOOPBACK_FAST_PATH`` was added.
427
Georg Brandl116aa622007-08-15 14:28:22 +0000428
Christian Heimes043d6f62008-01-07 17:19:16 +0000429.. data:: TIPC_*
430
431 TIPC related constants, matching the ones exported by the C socket API. See
432 the TIPC documentation for more information.
433
Christian Heimesdffa3942016-09-05 23:54:41 +0200434.. data:: AF_ALG
435 SOL_ALG
436 ALG_*
437
438 Constants for Linux Kernel cryptography.
439
440 Availability: Linux >= 2.6.38.
441
442 .. versionadded:: 3.6
443
caaveryeffc12f2017-09-06 18:18:10 -0400444
445.. data:: AF_VSOCK
446 IOCTL_VM_SOCKETS_GET_LOCAL_CID
447 VMADDR*
448 SO_VM*
449
450 Constants for Linux host/guest communication.
451
452 Availability: Linux >= 4.8.
453
454 .. versionadded:: 3.7
455
Giampaolo Rodola'80e1c432013-05-21 21:02:04 +0200456.. data:: AF_LINK
457
458 Availability: BSD, OSX.
459
460 .. versionadded:: 3.4
Christian Heimes043d6f62008-01-07 17:19:16 +0000461
Georg Brandl116aa622007-08-15 14:28:22 +0000462.. data:: has_ipv6
463
464 This constant contains a boolean value which indicates if IPv6 is supported on
465 this platform.
466
Martin Panterea7266d2015-09-11 23:14:57 +0000467.. data:: BDADDR_ANY
468 BDADDR_LOCAL
469
470 These are string constants containing Bluetooth addresses with special
471 meanings. For example, :const:`BDADDR_ANY` can be used to indicate
472 any address when specifying the binding socket with
473 :const:`BTPROTO_RFCOMM`.
474
475.. data:: HCI_FILTER
476 HCI_TIME_STAMP
477 HCI_DATA_DIR
478
479 For use with :const:`BTPROTO_HCI`. :const:`HCI_FILTER` is not
480 available for NetBSD or DragonFlyBSD. :const:`HCI_TIME_STAMP` and
481 :const:`HCI_DATA_DIR` are not available for FreeBSD, NetBSD, or
482 DragonFlyBSD.
Georg Brandl116aa622007-08-15 14:28:22 +0000483
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100484Functions
485^^^^^^^^^
486
487Creating sockets
488''''''''''''''''
489
490The following functions all create :ref:`socket objects <socket-objects>`.
491
492
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100493.. function:: socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100494
495 Create a new socket using the given address family, socket type and protocol
496 number. The address family should be :const:`AF_INET` (the default),
Cheryl Sabella731ff682018-09-11 20:32:15 -0400497 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN`, :const:`AF_PACKET`,
498 or :const:`AF_RDS`. The socket type should be :const:`SOCK_STREAM` (the
499 default), :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other
500 ``SOCK_`` constants. The protocol number is usually zero and may be omitted
501 or in the case where the address family is :const:`AF_CAN` the protocol
502 should be one of :const:`CAN_RAW`, :const:`CAN_BCM` or :const:`CAN_ISOTP`.
Christian Heimesb6e43af2018-01-29 22:37:58 +0100503
504 If *fileno* is specified, the values for *family*, *type*, and *proto* are
505 auto-detected from the specified file descriptor. Auto-detection can be
506 overruled by calling the function with explicit *family*, *type*, or *proto*
507 arguments. This only affects how Python represents e.g. the return value
508 of :meth:`socket.getpeername` but not the actual OS resource. Unlike
509 :func:`socket.fromfd`, *fileno* will return the same socket and not a
510 duplicate. This may help close a detached socket using
Berker Peksag24a61092015-10-08 06:34:01 +0300511 :meth:`socket.close()`.
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100512
513 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100514
515 .. versionchanged:: 3.3
516 The AF_CAN family was added.
517 The AF_RDS family was added.
518
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100519 .. versionchanged:: 3.4
520 The CAN_BCM protocol was added.
521
522 .. versionchanged:: 3.4
523 The returned socket is now non-inheritable.
524
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -0400525 .. versionchanged:: 3.7
526 The CAN_ISOTP protocol was added.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100527
Yury Selivanov98181422017-12-18 20:02:54 -0500528 .. versionchanged:: 3.7
529 When :const:`SOCK_NONBLOCK` or :const:`SOCK_CLOEXEC`
530 bit flags are applied to *type* they are cleared, and
531 :attr:`socket.type` will not reflect them. They are still passed
532 to the underlying system `socket()` call. Therefore::
533
534 sock = socket.socket(
535 socket.AF_INET,
536 socket.SOCK_STREAM | socket.SOCK_NONBLOCK)
537
538 will still create a non-blocking socket on OSes that support
539 ``SOCK_NONBLOCK``, but ``sock.type`` will be set to
540 ``socket.SOCK_STREAM``.
541
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100542.. function:: socketpair([family[, type[, proto]]])
543
544 Build a pair of connected socket objects using the given address family, socket
545 type, and protocol number. Address family, socket type, and protocol number are
546 as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
547 if defined on the platform; otherwise, the default is :const:`AF_INET`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100548
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100549 The newly created sockets are :ref:`non-inheritable <fd_inheritance>`.
550
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100551 .. versionchanged:: 3.2
552 The returned socket objects now support the whole socket API, rather
553 than a subset.
554
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100555 .. versionchanged:: 3.4
556 The returned sockets are now non-inheritable.
557
Charles-François Natali98c745a2014-10-14 21:22:44 +0100558 .. versionchanged:: 3.5
559 Windows support added.
560
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100561
Gregory P. Smithb4066372010-01-03 03:28:29 +0000562.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000563
Antoine Pitrou889a5102012-01-12 08:06:19 +0100564 Connect to a TCP service listening on the Internet *address* (a 2-tuple
565 ``(host, port)``), and return the socket object. This is a higher-level
566 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
567 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
568 and then try to connect to all possible addresses in turn until a
569 connection succeeds. This makes it easy to write clients that are
570 compatible to both IPv4 and IPv6.
571
572 Passing the optional *timeout* parameter will set the timeout on the
573 socket instance before attempting to connect. If no *timeout* is
574 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000575 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000576
Gregory P. Smithb4066372010-01-03 03:28:29 +0000577 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
578 socket to bind to as its source address before connecting. If host or port
579 are '' or 0 respectively the OS default behavior will be used.
580
581 .. versionchanged:: 3.2
582 *source_address* was added.
583
Georg Brandl116aa622007-08-15 14:28:22 +0000584
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100585.. function:: fromfd(fd, family, type, proto=0)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100586
587 Duplicate the file descriptor *fd* (an integer as returned by a file object's
588 :meth:`fileno` method) and build a socket object from the result. Address
589 family, socket type and protocol number are as for the :func:`.socket` function
590 above. The file descriptor should refer to a socket, but this is not checked ---
591 subsequent operations on the object may fail if the file descriptor is invalid.
592 This function is rarely needed, but can be used to get or set socket options on
593 a socket passed to a program as standard input or output (such as a server
594 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
595
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100596 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
597
598 .. versionchanged:: 3.4
599 The returned socket is now non-inheritable.
600
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100601
602.. function:: fromshare(data)
603
604 Instantiate a socket from data obtained from the :meth:`socket.share`
605 method. The socket is assumed to be in blocking mode.
606
607 Availability: Windows.
608
609 .. versionadded:: 3.3
610
611
612.. data:: SocketType
613
614 This is a Python type object that represents the socket object type. It is the
615 same as ``type(socket(...))``.
616
617
618Other functions
619'''''''''''''''
620
621The :mod:`socket` module also offers various network-related services:
622
623
Christian Heimesd0e31b92018-01-27 09:54:13 +0100624.. function:: close(fd)
625
626 Close a socket file descriptor. This is like :func:`os.close`, but for
627 sockets. On some platforms (most noticeable Windows) :func:`os.close`
628 does not work for socket file descriptors.
629
630 .. versionadded:: 3.7
631
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000632.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000633
Antoine Pitrou91035972010-05-31 17:04:40 +0000634 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
635 all the necessary arguments for creating a socket connected to that service.
636 *host* is a domain name, a string representation of an IPv4/v6 address
637 or ``None``. *port* is a string service name such as ``'http'``, a numeric
638 port number or ``None``. By passing ``None`` as the value of *host*
639 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000640
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000641 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000642 in order to narrow the list of addresses returned. Passing zero as a
643 value for each of these arguments selects the full range of results.
644 The *flags* argument can be one or several of the ``AI_*`` constants,
645 and will influence how results are computed and returned.
646 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
647 and will raise an error if *host* is a domain name.
648
649 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000650
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000651 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000652
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000653 In these tuples, *family*, *type*, *proto* are all integers and are
Ezio Melottic048d982013-04-17 04:10:26 +0300654 meant to be passed to the :func:`.socket` function. *canonname* will be
Antoine Pitrou91035972010-05-31 17:04:40 +0000655 a string representing the canonical name of the *host* if
656 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
657 will be empty. *sockaddr* is a tuple describing a socket address, whose
658 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
659 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
660 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
661 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000662
Antoine Pitrou91035972010-05-31 17:04:40 +0000663 The following example fetches address information for a hypothetical TCP
Ned Deily11cf4f62015-06-01 21:19:30 -0700664 connection to ``example.org`` on port 80 (results may differ on your
Antoine Pitrou91035972010-05-31 17:04:40 +0000665 system if IPv6 isn't enabled)::
666
Ned Deily11cf4f62015-06-01 21:19:30 -0700667 >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
Ned Deily1b79e2d2015-06-01 18:52:48 -0700668 [(<AddressFamily.AF_INET6: 10>, <SocketType.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700669 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
Ned Deily1b79e2d2015-06-01 18:52:48 -0700670 (<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700671 6, '', ('93.184.216.34', 80))]
Georg Brandl116aa622007-08-15 14:28:22 +0000672
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000673 .. versionchanged:: 3.2
Andrew Kuchling46ff4ee2014-02-15 16:39:37 -0500674 parameters can now be passed using keyword arguments.
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000675
Коренберг Марк7766b962018-02-13 00:47:42 +0500676 .. versionchanged:: 3.7
677 for IPv6 multicast addresses, string representing an address will not
678 contain ``%scope`` part.
679
Georg Brandl116aa622007-08-15 14:28:22 +0000680.. function:: getfqdn([name])
681
682 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
683 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000684 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000685 host, if available. The first name which includes a period is selected. In
686 case no fully qualified domain name is available, the hostname as returned by
687 :func:`gethostname` is returned.
688
Georg Brandl116aa622007-08-15 14:28:22 +0000689
690.. function:: gethostbyname(hostname)
691
692 Translate a host name to IPv4 address format. The IPv4 address is returned as a
693 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
694 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
695 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
696 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
697
698
699.. function:: gethostbyname_ex(hostname)
700
701 Translate a host name to IPv4 address format, extended interface. Return a
702 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
703 host name responding to the given *ip_address*, *aliaslist* is a (possibly
704 empty) list of alternative host names for the same address, and *ipaddrlist* is
705 a list of IPv4 addresses for the same interface on the same host (often but not
706 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
707 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
708 stack support.
709
710
711.. function:: gethostname()
712
713 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000714 interpreter is currently executing.
715
Benjamin Peterson65676e42008-11-05 21:42:45 +0000716 Note: :func:`gethostname` doesn't always return the fully qualified domain
Berker Peksag2a8baed2015-05-19 01:31:00 +0300717 name; use :func:`getfqdn` for that.
Georg Brandl116aa622007-08-15 14:28:22 +0000718
719
720.. function:: gethostbyaddr(ip_address)
721
722 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
723 primary host name responding to the given *ip_address*, *aliaslist* is a
724 (possibly empty) list of alternative host names for the same address, and
725 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
726 host (most likely containing only a single address). To find the fully qualified
727 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
728 both IPv4 and IPv6.
729
730
731.. function:: getnameinfo(sockaddr, flags)
732
733 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
734 on the settings of *flags*, the result can contain a fully-qualified domain name
735 or numeric address representation in *host*. Similarly, *port* can contain a
736 string port name or a numeric port number.
737
Коренберг Марк7766b962018-02-13 00:47:42 +0500738 For IPv6 addresses, ``%scope`` is appended to the host part if *sockaddr*
739 contains meaningful *scopeid*. Usually this happens for multicast addresses.
Georg Brandl116aa622007-08-15 14:28:22 +0000740
741.. function:: getprotobyname(protocolname)
742
743 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
Ezio Melottic048d982013-04-17 04:10:26 +0300744 suitable for passing as the (optional) third argument to the :func:`.socket`
Georg Brandl116aa622007-08-15 14:28:22 +0000745 function. This is usually only needed for sockets opened in "raw" mode
746 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
747 automatically if the protocol is omitted or zero.
748
749
750.. function:: getservbyname(servicename[, protocolname])
751
752 Translate an Internet service name and protocol name to a port number for that
753 service. The optional protocol name, if given, should be ``'tcp'`` or
754 ``'udp'``, otherwise any protocol will match.
755
756
757.. function:: getservbyport(port[, protocolname])
758
759 Translate an Internet port number and protocol name to a service name for that
760 service. The optional protocol name, if given, should be ``'tcp'`` or
761 ``'udp'``, otherwise any protocol will match.
762
763
Georg Brandl116aa622007-08-15 14:28:22 +0000764.. function:: ntohl(x)
765
766 Convert 32-bit positive integers from network to host byte order. On machines
767 where the host byte order is the same as network byte order, this is a no-op;
768 otherwise, it performs a 4-byte swap operation.
769
770
771.. function:: ntohs(x)
772
773 Convert 16-bit positive integers from network to host byte order. On machines
774 where the host byte order is the same as network byte order, this is a no-op;
775 otherwise, it performs a 2-byte swap operation.
776
Serhiy Storchaka6a7d3482016-10-02 12:34:40 +0300777 .. deprecated:: 3.7
778 In case *x* does not fit in 16-bit unsigned integer, but does fit in a
779 positive C int, it is silently truncated to 16-bit unsigned integer.
780 This silent truncation feature is deprecated, and will raise an
781 exception in future versions of Python.
782
Georg Brandl116aa622007-08-15 14:28:22 +0000783
784.. function:: htonl(x)
785
786 Convert 32-bit positive integers from host to network byte order. On machines
787 where the host byte order is the same as network byte order, this is a no-op;
788 otherwise, it performs a 4-byte swap operation.
789
790
791.. function:: htons(x)
792
793 Convert 16-bit positive integers from host to network byte order. On machines
794 where the host byte order is the same as network byte order, this is a no-op;
795 otherwise, it performs a 2-byte swap operation.
796
Serhiy Storchaka6a7d3482016-10-02 12:34:40 +0300797 .. deprecated:: 3.7
798 In case *x* does not fit in 16-bit unsigned integer, but does fit in a
799 positive C int, it is silently truncated to 16-bit unsigned integer.
800 This silent truncation feature is deprecated, and will raise an
801 exception in future versions of Python.
802
Georg Brandl116aa622007-08-15 14:28:22 +0000803
804.. function:: inet_aton(ip_string)
805
806 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000807 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000808 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000809 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000810 for the 32-bit packed binary this function returns.
811
Georg Brandlf5123ef2009-06-04 10:28:36 +0000812 :func:`inet_aton` also accepts strings with less than three dots; see the
813 Unix manual page :manpage:`inet(3)` for details.
814
Georg Brandl116aa622007-08-15 14:28:22 +0000815 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200816 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000817 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000818
Georg Brandl5f259722009-05-04 20:50:30 +0000819 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000820 instead for IPv4/v6 dual stack support.
821
822
823.. function:: inet_ntoa(packed_ip)
824
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200825 Convert a 32-bit packed IPv4 address (a :term:`bytes-like object` four
826 bytes in length) to its standard dotted-quad string representation (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000827 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000828 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000829 is the C type for the 32-bit packed binary data this function takes as an
830 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000831
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000832 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200833 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000834 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000835 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000836
Georg Brandl8c16cb92016-02-25 20:17:45 +0100837 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200838 Writable :term:`bytes-like object` is now accepted.
839
Georg Brandl116aa622007-08-15 14:28:22 +0000840
841.. function:: inet_pton(address_family, ip_string)
842
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000843 Convert an IP address from its family-specific string format to a packed,
844 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000845 calls for an object of type :c:type:`struct in_addr` (similar to
846 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000847
848 Supported values for *address_family* are currently :const:`AF_INET` and
849 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200850 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000851 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000852 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000853
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900854 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000855
R David Murray6c501012014-03-07 21:22:39 -0500856 .. versionchanged:: 3.4
857 Windows support added
858
Georg Brandl116aa622007-08-15 14:28:22 +0000859
860.. function:: inet_ntop(address_family, packed_ip)
861
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200862 Convert a packed IP address (a :term:`bytes-like object` of some number of
863 bytes) to its standard, family-specific string representation (for
864 example, ``'7.10.0.5'`` or ``'5aef:2b::8'``).
865 :func:`inet_ntop` is useful when a library or network protocol returns an
866 object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`) or
867 :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000868
869 Supported values for *address_family* are currently :const:`AF_INET` and
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200870 :const:`AF_INET6`. If the bytes object *packed_ip* is not the correct
871 length for the specified address family, :exc:`ValueError` will be raised.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200872 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000873
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900874 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000875
R David Murray6c501012014-03-07 21:22:39 -0500876 .. versionchanged:: 3.4
877 Windows support added
878
Georg Brandl8c16cb92016-02-25 20:17:45 +0100879 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200880 Writable :term:`bytes-like object` is now accepted.
881
Georg Brandl116aa622007-08-15 14:28:22 +0000882
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000883..
884 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
885 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
886 interface, in which struct msghdr has no msg_control or
887 msg_controllen members, is not currently supported.
888
889.. function:: CMSG_LEN(length)
890
891 Return the total length, without trailing padding, of an ancillary
892 data item with associated data of the given *length*. This value
893 can often be used as the buffer size for :meth:`~socket.recvmsg` to
894 receive a single item of ancillary data, but :rfc:`3542` requires
895 portable applications to use :func:`CMSG_SPACE` and thus include
896 space for padding, even when the item will be the last in the
897 buffer. Raises :exc:`OverflowError` if *length* is outside the
898 permissible range of values.
899
900 Availability: most Unix platforms, possibly others.
901
902 .. versionadded:: 3.3
903
904
905.. function:: CMSG_SPACE(length)
906
907 Return the buffer size needed for :meth:`~socket.recvmsg` to
908 receive an ancillary data item with associated data of the given
909 *length*, along with any trailing padding. The buffer space needed
910 to receive multiple items is the sum of the :func:`CMSG_SPACE`
911 values for their associated data lengths. Raises
912 :exc:`OverflowError` if *length* is outside the permissible range
913 of values.
914
915 Note that some systems might support ancillary data without
916 providing this function. Also note that setting the buffer size
917 using the results of this function may not precisely limit the
918 amount of ancillary data that can be received, since additional
919 data may be able to fit into the padding area.
920
921 Availability: most Unix platforms, possibly others.
922
923 .. versionadded:: 3.3
924
925
Georg Brandl116aa622007-08-15 14:28:22 +0000926.. function:: getdefaulttimeout()
927
Ezio Melotti388c9452011-08-14 08:28:57 +0300928 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000929 of ``None`` indicates that new socket objects have no timeout. When the socket
930 module is first imported, the default is ``None``.
931
Georg Brandl116aa622007-08-15 14:28:22 +0000932
933.. function:: setdefaulttimeout(timeout)
934
Ezio Melotti388c9452011-08-14 08:28:57 +0300935 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000936 the socket module is first imported, the default is ``None``. See
937 :meth:`~socket.settimeout` for possible values and their respective
938 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000939
Georg Brandl116aa622007-08-15 14:28:22 +0000940
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000941.. function:: sethostname(name)
942
Serhiy Storchakad65c9492015-11-02 14:10:23 +0200943 Set the machine's hostname to *name*. This will raise an
Antoine Pitrou5574c302011-10-12 17:53:43 +0200944 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000945
946 Availability: Unix.
947
948 .. versionadded:: 3.3
949
950
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700951.. function:: if_nameindex()
952
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700953 Return a list of network interface information
954 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200955 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700956
957 Availability: Unix.
958
959 .. versionadded:: 3.3
960
961
962.. function:: if_nametoindex(if_name)
963
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700964 Return a network interface index number corresponding to an
965 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200966 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700967
968 Availability: Unix.
969
970 .. versionadded:: 3.3
971
972
973.. function:: if_indextoname(if_index)
974
Serhiy Storchakad65c9492015-11-02 14:10:23 +0200975 Return a network interface name corresponding to an
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700976 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200977 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700978
979 Availability: Unix.
980
981 .. versionadded:: 3.3
982
983
Georg Brandl116aa622007-08-15 14:28:22 +0000984.. _socket-objects:
985
986Socket Objects
987--------------
988
Antoine Pitroue3658a72013-12-04 21:02:42 +0100989Socket objects have the following methods. Except for
990:meth:`~socket.makefile`, these correspond to Unix system calls applicable
991to sockets.
Georg Brandl116aa622007-08-15 14:28:22 +0000992
Martin Pantere37fc182016-04-24 04:24:36 +0000993.. versionchanged:: 3.2
994 Support for the :term:`context manager` protocol was added. Exiting the
995 context manager is equivalent to calling :meth:`~socket.close`.
996
Georg Brandl116aa622007-08-15 14:28:22 +0000997
998.. method:: socket.accept()
999
1000 Accept a connection. The socket must be bound to an address and listening for
1001 connections. The return value is a pair ``(conn, address)`` where *conn* is a
1002 *new* socket object usable to send and receive data on the connection, and
1003 *address* is the address bound to the socket on the other end of the connection.
1004
Victor Stinnerdaf45552013-08-28 00:53:59 +02001005 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
1006
1007 .. versionchanged:: 3.4
1008 The socket is now non-inheritable.
1009
Victor Stinner708d9ba2015-04-02 11:49:42 +02001010 .. versionchanged:: 3.5
1011 If the system call is interrupted and the signal handler does not raise
1012 an exception, the method now retries the system call instead of raising
1013 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1014
Georg Brandl116aa622007-08-15 14:28:22 +00001015
1016.. method:: socket.bind(address)
1017
1018 Bind the socket to *address*. The socket must not already be bound. (The format
1019 of *address* depends on the address family --- see above.)
1020
Georg Brandl116aa622007-08-15 14:28:22 +00001021
1022.. method:: socket.close()
1023
Antoine Pitroue3658a72013-12-04 21:02:42 +01001024 Mark the socket closed. The underlying system resource (e.g. a file
1025 descriptor) is also closed when all file objects from :meth:`makefile()`
1026 are closed. Once that happens, all future operations on the socket
1027 object will fail. The remote end will receive no more data (after
1028 queued data is flushed).
1029
1030 Sockets are automatically closed when they are garbage-collected, but
1031 it is recommended to :meth:`close` them explicitly, or to use a
1032 :keyword:`with` statement around them.
Georg Brandl116aa622007-08-15 14:28:22 +00001033
Martin Panter50ab1a32016-04-11 00:38:12 +00001034 .. versionchanged:: 3.6
1035 :exc:`OSError` is now raised if an error occurs when the underlying
1036 :c:func:`close` call is made.
1037
Antoine Pitrou4a67a462011-01-02 22:06:53 +00001038 .. note::
Éric Araujofa5e6e42014-03-12 19:51:00 -04001039
Antoine Pitrou4a67a462011-01-02 22:06:53 +00001040 :meth:`close()` releases the resource associated with a connection but
1041 does not necessarily close the connection immediately. If you want
1042 to close the connection in a timely fashion, call :meth:`shutdown()`
1043 before :meth:`close()`.
1044
Georg Brandl116aa622007-08-15 14:28:22 +00001045
1046.. method:: socket.connect(address)
1047
1048 Connect to a remote socket at *address*. (The format of *address* depends on the
1049 address family --- see above.)
1050
Victor Stinner81c41db2015-04-02 11:50:57 +02001051 If the connection is interrupted by a signal, the method waits until the
1052 connection completes, or raise a :exc:`socket.timeout` on timeout, if the
1053 signal handler doesn't raise an exception and the socket is blocking or has
1054 a timeout. For non-blocking sockets, the method raises an
1055 :exc:`InterruptedError` exception if the connection is interrupted by a
1056 signal (or the exception raised by the signal handler).
1057
1058 .. versionchanged:: 3.5
1059 The method now waits until the connection completes instead of raising an
1060 :exc:`InterruptedError` exception if the connection is interrupted by a
1061 signal, the signal handler doesn't raise an exception and the socket is
1062 blocking or has a timeout (see the :pep:`475` for the rationale).
1063
Georg Brandl116aa622007-08-15 14:28:22 +00001064
1065.. method:: socket.connect_ex(address)
1066
1067 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +00001068 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +00001069 problems, such as "host not found," can still raise exceptions). The error
1070 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +00001071 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +00001072 connects.
1073
Georg Brandl116aa622007-08-15 14:28:22 +00001074
Antoine Pitrou6e451df2010-08-09 20:39:54 +00001075.. method:: socket.detach()
1076
1077 Put the socket object into closed state without actually closing the
1078 underlying file descriptor. The file descriptor is returned, and can
1079 be reused for other purposes.
1080
1081 .. versionadded:: 3.2
1082
1083
Victor Stinnerdaf45552013-08-28 00:53:59 +02001084.. method:: socket.dup()
1085
1086 Duplicate the socket.
1087
1088 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
1089
1090 .. versionchanged:: 3.4
1091 The socket is now non-inheritable.
1092
1093
Georg Brandl116aa622007-08-15 14:28:22 +00001094.. method:: socket.fileno()
1095
Kushal Das89beb272016-06-04 10:20:12 -07001096 Return the socket's file descriptor (a small integer), or -1 on failure. This
1097 is useful with :func:`select.select`.
Georg Brandl116aa622007-08-15 14:28:22 +00001098
1099 Under Windows the small integer returned by this method cannot be used where a
1100 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
1101 this limitation.
1102
Victor Stinnerdaf45552013-08-28 00:53:59 +02001103.. method:: socket.get_inheritable()
1104
1105 Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1106 descriptor or socket's handle: ``True`` if the socket can be inherited in
1107 child processes, ``False`` if it cannot.
1108
1109 .. versionadded:: 3.4
1110
1111
Georg Brandl116aa622007-08-15 14:28:22 +00001112.. method:: socket.getpeername()
1113
1114 Return the remote address to which the socket is connected. This is useful to
1115 find out the port number of a remote IPv4/v6 socket, for instance. (The format
1116 of the address returned depends on the address family --- see above.) On some
1117 systems this function is not supported.
1118
1119
1120.. method:: socket.getsockname()
1121
1122 Return the socket's own address. This is useful to find out the port number of
1123 an IPv4/v6 socket, for instance. (The format of the address returned depends on
1124 the address family --- see above.)
1125
1126
1127.. method:: socket.getsockopt(level, optname[, buflen])
1128
1129 Return the value of the given socket option (see the Unix man page
1130 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
1131 are defined in this module. If *buflen* is absent, an integer option is assumed
1132 and its integer value is returned by the function. If *buflen* is present, it
1133 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001134 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +00001135 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001136 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +00001137
Georg Brandl48310cd2009-01-03 21:18:54 +00001138
Yury Selivanovf11b4602018-01-28 17:27:38 -05001139.. method:: socket.getblocking()
1140
1141 Return ``True`` if socket is in blocking mode, ``False`` if in
1142 non-blocking.
1143
1144 This is equivalent to checking ``socket.gettimeout() == 0``.
1145
1146 .. versionadded:: 3.7
1147
1148
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001149.. method:: socket.gettimeout()
1150
Ezio Melotti388c9452011-08-14 08:28:57 +03001151 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001152 or ``None`` if no timeout is set. This reflects the last call to
1153 :meth:`setblocking` or :meth:`settimeout`.
1154
1155
Christian Heimesfaf2f632008-01-06 16:59:19 +00001156.. method:: socket.ioctl(control, option)
1157
Georg Brandl48310cd2009-01-03 21:18:54 +00001158 :platform: Windows
1159
Christian Heimes679db4a2008-01-18 09:56:22 +00001160 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +00001161 interface. Please refer to the `Win32 documentation
Georg Brandl5d941342016-02-26 19:37:12 +01001162 <https://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
Georg Brandl8569e582010-05-19 20:57:08 +00001163 information.
Georg Brandl48310cd2009-01-03 21:18:54 +00001164
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +00001165 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
1166 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001167
Steve Dowerea93ac02016-06-17 12:52:18 -07001168 Currently only the following control codes are supported:
1169 ``SIO_RCVALL``, ``SIO_KEEPALIVE_VALS``, and ``SIO_LOOPBACK_FAST_PATH``.
1170
1171 .. versionchanged:: 3.6
1172 ``SIO_LOOPBACK_FAST_PATH`` was added.
1173
Charles-François Natali644b8f52014-05-22 19:45:39 +01001174.. method:: socket.listen([backlog])
Georg Brandl116aa622007-08-15 14:28:22 +00001175
Charles-François Natali644b8f52014-05-22 19:45:39 +01001176 Enable a server to accept connections. If *backlog* is specified, it must
1177 be at least 0 (if it is lower, it is set to 0); it specifies the number of
1178 unaccepted connections that the system will allow before refusing new
1179 connections. If not specified, a default reasonable value is chosen.
Georg Brandl116aa622007-08-15 14:28:22 +00001180
Charles-François Natali644b8f52014-05-22 19:45:39 +01001181 .. versionchanged:: 3.5
1182 The *backlog* parameter is now optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001183
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001184.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
1185 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001186
1187 .. index:: single: I/O control; buffering
1188
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001189 Return a :term:`file object` associated with the socket. The exact returned
1190 type depends on the arguments given to :meth:`makefile`. These arguments are
Berker Peksag3fe64d02016-02-18 17:34:00 +02001191 interpreted the same way as by the built-in :func:`open` function, except
1192 the only supported *mode* values are ``'r'`` (default), ``'w'`` and ``'b'``.
Georg Brandl116aa622007-08-15 14:28:22 +00001193
Antoine Pitroue3658a72013-12-04 21:02:42 +01001194 The socket must be in blocking mode; it can have a timeout, but the file
Martin Panter7462b6492015-11-02 03:37:02 +00001195 object's internal buffer may end up in an inconsistent state if a timeout
Antoine Pitroue3658a72013-12-04 21:02:42 +01001196 occurs.
1197
1198 Closing the file object returned by :meth:`makefile` won't close the
1199 original socket unless all other file objects have been closed and
1200 :meth:`socket.close` has been called on the socket object.
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001201
1202 .. note::
1203
1204 On Windows, the file-like object created by :meth:`makefile` cannot be
1205 used where a file object with a file descriptor is expected, such as the
1206 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +00001207
Georg Brandl116aa622007-08-15 14:28:22 +00001208
1209.. method:: socket.recv(bufsize[, flags])
1210
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001211 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +00001212 data received. The maximum amount of data to be received at once is specified
1213 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
1214 the optional argument *flags*; it defaults to zero.
1215
1216 .. note::
1217
1218 For best match with hardware and network realities, the value of *bufsize*
1219 should be a relatively small power of 2, for example, 4096.
1220
Victor Stinner708d9ba2015-04-02 11:49:42 +02001221 .. versionchanged:: 3.5
1222 If the system call is interrupted and the signal handler does not raise
1223 an exception, the method now retries the system call instead of raising
1224 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1225
Georg Brandl116aa622007-08-15 14:28:22 +00001226
1227.. method:: socket.recvfrom(bufsize[, flags])
1228
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001229 Receive data from the socket. The return value is a pair ``(bytes, address)``
1230 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +00001231 address of the socket sending the data. See the Unix manual page
1232 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
1233 to zero. (The format of *address* depends on the address family --- see above.)
1234
Victor Stinner708d9ba2015-04-02 11:49:42 +02001235 .. versionchanged:: 3.5
1236 If the system call is interrupted and the signal handler does not raise
1237 an exception, the method now retries the system call instead of raising
1238 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1239
Коренберг Марк7766b962018-02-13 00:47:42 +05001240 .. versionchanged:: 3.7
1241 For multicast IPv6 address, first item of *address* does not contain
1242 ``%scope`` part anymore. In order to get full IPv6 address use
1243 :func:`getnameinfo`.
Georg Brandl116aa622007-08-15 14:28:22 +00001244
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001245.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
1246
1247 Receive normal data (up to *bufsize* bytes) and ancillary data from
1248 the socket. The *ancbufsize* argument sets the size in bytes of
1249 the internal buffer used to receive the ancillary data; it defaults
1250 to 0, meaning that no ancillary data will be received. Appropriate
1251 buffer sizes for ancillary data can be calculated using
1252 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
1253 into the buffer might be truncated or discarded. The *flags*
1254 argument defaults to 0 and has the same meaning as for
1255 :meth:`recv`.
1256
1257 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
1258 address)``. The *data* item is a :class:`bytes` object holding the
1259 non-ancillary data received. The *ancdata* item is a list of zero
1260 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
1261 the ancillary data (control messages) received: *cmsg_level* and
1262 *cmsg_type* are integers specifying the protocol level and
1263 protocol-specific type respectively, and *cmsg_data* is a
1264 :class:`bytes` object holding the associated data. The *msg_flags*
1265 item is the bitwise OR of various flags indicating conditions on
1266 the received message; see your system documentation for details.
1267 If the receiving socket is unconnected, *address* is the address of
1268 the sending socket, if available; otherwise, its value is
1269 unspecified.
1270
1271 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
1272 pass file descriptors between processes over an :const:`AF_UNIX`
1273 socket. When this facility is used (it is often restricted to
1274 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
1275 ancillary data, items of the form ``(socket.SOL_SOCKET,
1276 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
1277 representing the new file descriptors as a binary array of the
1278 native C :c:type:`int` type. If :meth:`recvmsg` raises an
1279 exception after the system call returns, it will first attempt to
1280 close any file descriptors received via this mechanism.
1281
1282 Some systems do not indicate the truncated length of ancillary data
1283 items which have been only partially received. If an item appears
1284 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
1285 a :exc:`RuntimeWarning`, and will return the part of it which is
1286 inside the buffer provided it has not been truncated before the
1287 start of its associated data.
1288
1289 On systems which support the :const:`SCM_RIGHTS` mechanism, the
1290 following function will receive up to *maxfds* file descriptors,
1291 returning the message data and a list containing the descriptors
1292 (while ignoring unexpected conditions such as unrelated control
1293 messages being received). See also :meth:`sendmsg`. ::
1294
1295 import socket, array
1296
1297 def recv_fds(sock, msglen, maxfds):
1298 fds = array.array("i") # Array of ints
1299 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1300 for cmsg_level, cmsg_type, cmsg_data in ancdata:
1301 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
1302 # Append data, ignoring any truncated integers at the end.
1303 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
1304 return msg, list(fds)
1305
1306 Availability: most Unix platforms, possibly others.
1307
1308 .. versionadded:: 3.3
1309
Victor Stinner708d9ba2015-04-02 11:49:42 +02001310 .. versionchanged:: 3.5
1311 If the system call is interrupted and the signal handler does not raise
1312 an exception, the method now retries the system call instead of raising
1313 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1314
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001315
1316.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1317
1318 Receive normal data and ancillary data from the socket, behaving as
1319 :meth:`recvmsg` would, but scatter the non-ancillary data into a
1320 series of buffers instead of returning a new bytes object. The
1321 *buffers* argument must be an iterable of objects that export
1322 writable buffers (e.g. :class:`bytearray` objects); these will be
1323 filled with successive chunks of the non-ancillary data until it
1324 has all been written or there are no more buffers. The operating
1325 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1326 on the number of buffers that can be used. The *ancbufsize* and
1327 *flags* arguments have the same meaning as for :meth:`recvmsg`.
1328
1329 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1330 address)``, where *nbytes* is the total number of bytes of
1331 non-ancillary data written into the buffers, and *ancdata*,
1332 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1333
1334 Example::
1335
1336 >>> import socket
1337 >>> s1, s2 = socket.socketpair()
1338 >>> b1 = bytearray(b'----')
1339 >>> b2 = bytearray(b'0123456789')
1340 >>> b3 = bytearray(b'--------------')
1341 >>> s1.send(b'Mary had a little lamb')
1342 22
1343 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1344 (22, [], 0, None)
1345 >>> [b1, b2, b3]
1346 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1347
1348 Availability: most Unix platforms, possibly others.
1349
1350 .. versionadded:: 3.3
1351
1352
Georg Brandl116aa622007-08-15 14:28:22 +00001353.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1354
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001355 Receive data from the socket, writing it into *buffer* instead of creating a
1356 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +00001357 the number of bytes received and *address* is the address of the socket sending
1358 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
1359 optional argument *flags*; it defaults to zero. (The format of *address*
1360 depends on the address family --- see above.)
1361
Georg Brandl116aa622007-08-15 14:28:22 +00001362
1363.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1364
1365 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001366 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +00001367 receive up to the size available in the given buffer. Returns the number of
1368 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
1369 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001370
Georg Brandl116aa622007-08-15 14:28:22 +00001371
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001372.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001373
1374 Send data to the socket. The socket must be connected to a remote socket. The
1375 optional *flags* argument has the same meaning as for :meth:`recv` above.
1376 Returns the number of bytes sent. Applications are responsible for checking that
1377 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001378 application needs to attempt delivery of the remaining data. For further
1379 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +00001380
Victor Stinner708d9ba2015-04-02 11:49:42 +02001381 .. versionchanged:: 3.5
1382 If the system call is interrupted and the signal handler does not raise
1383 an exception, the method now retries the system call instead of raising
1384 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1385
Georg Brandl116aa622007-08-15 14:28:22 +00001386
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001387.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001388
1389 Send data to the socket. The socket must be connected to a remote socket. The
1390 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001391 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001392 either all data has been sent or an error occurs. ``None`` is returned on
1393 success. On error, an exception is raised, and there is no way to determine how
1394 much data, if any, was successfully sent.
1395
Victor Stinner708d9ba2015-04-02 11:49:42 +02001396 .. versionchanged:: 3.5
Martin Pantereb995702016-07-28 01:11:04 +00001397 The socket timeout is no more reset each time data is sent successfully.
Victor Stinner8912d142015-04-06 23:16:34 +02001398 The socket timeout is now the maximum total duration to send all data.
1399
1400 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001401 If the system call is interrupted and the signal handler does not raise
1402 an exception, the method now retries the system call instead of raising
1403 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1404
Georg Brandl116aa622007-08-15 14:28:22 +00001405
Ezio Melottie0add762012-09-14 06:32:35 +03001406.. method:: socket.sendto(bytes, address)
1407 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001408
1409 Send data to the socket. The socket should not be connected to a remote socket,
1410 since the destination socket is specified by *address*. The optional *flags*
1411 argument has the same meaning as for :meth:`recv` above. Return the number of
1412 bytes sent. (The format of *address* depends on the address family --- see
1413 above.)
1414
Victor Stinner708d9ba2015-04-02 11:49:42 +02001415 .. versionchanged:: 3.5
1416 If the system call is interrupted and the signal handler does not raise
1417 an exception, the method now retries the system call instead of raising
1418 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1419
Georg Brandl116aa622007-08-15 14:28:22 +00001420
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001421.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1422
1423 Send normal and ancillary data to the socket, gathering the
1424 non-ancillary data from a series of buffers and concatenating it
1425 into a single message. The *buffers* argument specifies the
Serhiy Storchakab757c832014-12-05 22:25:22 +02001426 non-ancillary data as an iterable of
1427 :term:`bytes-like objects <bytes-like object>`
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001428 (e.g. :class:`bytes` objects); the operating system may set a limit
1429 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1430 that can be used. The *ancdata* argument specifies the ancillary
1431 data (control messages) as an iterable of zero or more tuples
1432 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1433 *cmsg_type* are integers specifying the protocol level and
1434 protocol-specific type respectively, and *cmsg_data* is a
Serhiy Storchakab757c832014-12-05 22:25:22 +02001435 bytes-like object holding the associated data. Note that
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001436 some systems (in particular, systems without :func:`CMSG_SPACE`)
1437 might support sending only one control message per call. The
1438 *flags* argument defaults to 0 and has the same meaning as for
1439 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1440 destination address for the message. The return value is the
1441 number of bytes of non-ancillary data sent.
1442
1443 The following function sends the list of file descriptors *fds*
1444 over an :const:`AF_UNIX` socket, on systems which support the
1445 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1446
1447 import socket, array
1448
1449 def send_fds(sock, msg, fds):
1450 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1451
1452 Availability: most Unix platforms, possibly others.
1453
1454 .. versionadded:: 3.3
1455
Victor Stinner708d9ba2015-04-02 11:49:42 +02001456 .. versionchanged:: 3.5
1457 If the system call is interrupted and the signal handler does not raise
1458 an exception, the method now retries the system call instead of raising
1459 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1460
Christian Heimesdffa3942016-09-05 23:54:41 +02001461.. method:: socket.sendmsg_afalg([msg], *, op[, iv[, assoclen[, flags]]])
1462
1463 Specialized version of :meth:`~socket.sendmsg` for :const:`AF_ALG` socket.
1464 Set mode, IV, AEAD associated data length and flags for :const:`AF_ALG` socket.
1465
1466 Availability: Linux >= 2.6.38
1467
1468 .. versionadded:: 3.6
1469
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001470.. method:: socket.sendfile(file, offset=0, count=None)
1471
1472 Send a file until EOF is reached by using high-performance
1473 :mod:`os.sendfile` and return the total number of bytes which were sent.
1474 *file* must be a regular file object opened in binary mode. If
1475 :mod:`os.sendfile` is not available (e.g. Windows) or *file* is not a
1476 regular file :meth:`send` will be used instead. *offset* tells from where to
1477 start reading the file. If specified, *count* is the total number of bytes
1478 to transmit as opposed to sending the file until EOF is reached. File
1479 position is updated on return or also in case of error in which case
1480 :meth:`file.tell() <io.IOBase.tell>` can be used to figure out the number of
Martin Panter8f137832017-01-14 08:24:20 +00001481 bytes which were sent. The socket must be of :const:`SOCK_STREAM` type.
1482 Non-blocking sockets are not supported.
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001483
1484 .. versionadded:: 3.5
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001485
Victor Stinnerdaf45552013-08-28 00:53:59 +02001486.. method:: socket.set_inheritable(inheritable)
1487
1488 Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1489 descriptor or socket's handle.
1490
1491 .. versionadded:: 3.4
1492
1493
Georg Brandl116aa622007-08-15 14:28:22 +00001494.. method:: socket.setblocking(flag)
1495
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001496 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1497 socket is set to non-blocking, else to blocking mode.
1498
1499 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1500
1501 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1502
1503 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001504
Yury Selivanov98181422017-12-18 20:02:54 -05001505 .. versionchanged:: 3.7
1506 The method no longer applies :const:`SOCK_NONBLOCK` flag on
1507 :attr:`socket.type`.
1508
Georg Brandl116aa622007-08-15 14:28:22 +00001509
1510.. method:: socket.settimeout(value)
1511
1512 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001513 nonnegative floating point number expressing seconds, or ``None``.
1514 If a non-zero value is given, subsequent socket operations will raise a
1515 :exc:`timeout` exception if the timeout period *value* has elapsed before
1516 the operation has completed. If zero is given, the socket is put in
1517 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001518
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001519 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001520
Yury Selivanov98181422017-12-18 20:02:54 -05001521 .. versionchanged:: 3.7
1522 The method no longer toggles :const:`SOCK_NONBLOCK` flag on
1523 :attr:`socket.type`.
1524
Georg Brandl116aa622007-08-15 14:28:22 +00001525
Christian Heimesdffa3942016-09-05 23:54:41 +02001526.. method:: socket.setsockopt(level, optname, value: int)
1527.. method:: socket.setsockopt(level, optname, value: buffer)
1528.. method:: socket.setsockopt(level, optname, None, optlen: int)
Georg Brandl116aa622007-08-15 14:28:22 +00001529
1530 .. index:: module: struct
1531
1532 Set the value of the given socket option (see the Unix manual page
1533 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
Christian Heimesdffa3942016-09-05 23:54:41 +02001534 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer,
Serhiy Storchaka989db5c2016-10-19 16:37:13 +03001535 ``None`` or a :term:`bytes-like object` representing a buffer. In the later
Christian Heimesdffa3942016-09-05 23:54:41 +02001536 case it is up to the caller to ensure that the bytestring contains the
1537 proper bits (see the optional built-in module :mod:`struct` for a way to
Serhiy Storchaka989db5c2016-10-19 16:37:13 +03001538 encode C structures as bytestrings). When value is set to ``None``,
Christian Heimesdffa3942016-09-05 23:54:41 +02001539 optlen argument is required. It's equivalent to call setsockopt C
1540 function with optval=NULL and optlen=optlen.
1541
Georg Brandl116aa622007-08-15 14:28:22 +00001542
Georg Brandl8c16cb92016-02-25 20:17:45 +01001543 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +02001544 Writable :term:`bytes-like object` is now accepted.
1545
Christian Heimesdffa3942016-09-05 23:54:41 +02001546 .. versionchanged:: 3.6
1547 setsockopt(level, optname, None, optlen: int) form added.
1548
Georg Brandl116aa622007-08-15 14:28:22 +00001549
1550.. method:: socket.shutdown(how)
1551
1552 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1553 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1554 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001555 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001556
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001557
1558.. method:: socket.share(process_id)
1559
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001560 Duplicate a socket and prepare it for sharing with a target process. The
1561 target process must be provided with *process_id*. The resulting bytes object
1562 can then be passed to the target process using some form of interprocess
1563 communication and the socket can be recreated there using :func:`fromshare`.
1564 Once this method has been called, it is safe to close the socket since
1565 the operating system has already duplicated it for the target process.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001566
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001567 Availability: Windows.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001568
1569 .. versionadded:: 3.3
1570
1571
Georg Brandl8569e582010-05-19 20:57:08 +00001572Note that there are no methods :meth:`read` or :meth:`write`; use
1573:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001574
1575Socket objects also have these (read-only) attributes that correspond to the
Serhiy Storchakaee1b01a2016-12-02 23:13:53 +02001576values given to the :class:`~socket.socket` constructor.
Georg Brandl116aa622007-08-15 14:28:22 +00001577
1578
1579.. attribute:: socket.family
1580
1581 The socket family.
1582
Georg Brandl116aa622007-08-15 14:28:22 +00001583
1584.. attribute:: socket.type
1585
1586 The socket type.
1587
Georg Brandl116aa622007-08-15 14:28:22 +00001588
1589.. attribute:: socket.proto
1590
1591 The socket protocol.
1592
Georg Brandl116aa622007-08-15 14:28:22 +00001593
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001594
1595.. _socket-timeouts:
1596
1597Notes on socket timeouts
1598------------------------
1599
1600A socket object can be in one of three modes: blocking, non-blocking, or
1601timeout. Sockets are by default always created in blocking mode, but this
1602can be changed by calling :func:`setdefaulttimeout`.
1603
1604* In *blocking mode*, operations block until complete or the system returns
1605 an error (such as connection timed out).
1606
1607* In *non-blocking mode*, operations fail (with an error that is unfortunately
1608 system-dependent) if they cannot be completed immediately: functions from the
1609 :mod:`select` can be used to know when and whether a socket is available for
1610 reading or writing.
1611
1612* In *timeout mode*, operations fail if they cannot be completed within the
1613 timeout specified for the socket (they raise a :exc:`timeout` exception)
1614 or if the system returns an error.
1615
1616.. note::
1617 At the operating system level, sockets in *timeout mode* are internally set
1618 in non-blocking mode. Also, the blocking and timeout modes are shared between
1619 file descriptors and socket objects that refer to the same network endpoint.
1620 This implementation detail can have visible consequences if e.g. you decide
1621 to use the :meth:`~socket.fileno()` of a socket.
1622
1623Timeouts and the ``connect`` method
1624^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1625
1626The :meth:`~socket.connect` operation is also subject to the timeout
1627setting, and in general it is recommended to call :meth:`~socket.settimeout`
1628before calling :meth:`~socket.connect` or pass a timeout parameter to
1629:meth:`create_connection`. However, the system network stack may also
1630return a connection timeout error of its own regardless of any Python socket
1631timeout setting.
1632
1633Timeouts and the ``accept`` method
1634^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1635
1636If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1637the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1638behaviour depends on settings of the listening socket:
1639
1640* if the listening socket is in *blocking mode* or in *timeout mode*,
1641 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1642
1643* if the listening socket is in *non-blocking mode*, whether the socket
1644 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1645 is operating system-dependent. If you want to ensure cross-platform
1646 behaviour, it is recommended you manually override this setting.
1647
1648
Georg Brandl116aa622007-08-15 14:28:22 +00001649.. _socket-example:
1650
1651Example
1652-------
1653
1654Here are four minimal example programs using the TCP/IP protocol: a server that
1655echoes all data that it receives back (servicing only one client), and a client
Ezio Melottic048d982013-04-17 04:10:26 +03001656using it. Note that a server must perform the sequence :func:`.socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001657:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1658repeating the :meth:`~socket.accept` to service more than one client), while a
Ezio Melottic048d982013-04-17 04:10:26 +03001659client only needs the sequence :func:`.socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001660note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1661the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001662:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001663
1664The first two examples support IPv4 only. ::
1665
1666 # Echo server program
1667 import socket
1668
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001669 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001670 PORT = 50007 # Arbitrary non-privileged port
Martin Pantere37fc182016-04-24 04:24:36 +00001671 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1672 s.bind((HOST, PORT))
1673 s.listen(1)
1674 conn, addr = s.accept()
1675 with conn:
1676 print('Connected by', addr)
1677 while True:
1678 data = conn.recv(1024)
1679 if not data: break
1680 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001681
1682::
1683
1684 # Echo client program
1685 import socket
1686
1687 HOST = 'daring.cwi.nl' # The remote host
1688 PORT = 50007 # The same port as used by the server
Martin Pantere37fc182016-04-24 04:24:36 +00001689 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1690 s.connect((HOST, PORT))
1691 s.sendall(b'Hello, world')
1692 data = s.recv(1024)
Georg Brandl6911e3c2007-09-04 07:15:32 +00001693 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001694
1695The next two examples are identical to the above two, but support both IPv4 and
1696IPv6. The server side will listen to the first address family available (it
1697should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1698precedence and the server may not accept IPv4 traffic. The client side will try
1699to connect to the all addresses returned as a result of the name resolution, and
1700sends traffic to the first one connected successfully. ::
1701
1702 # Echo server program
1703 import socket
1704 import sys
1705
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001706 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001707 PORT = 50007 # Arbitrary non-privileged port
1708 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001709 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1710 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001711 af, socktype, proto, canonname, sa = res
1712 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001713 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001714 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001715 s = None
1716 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001717 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001718 s.bind(sa)
1719 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001720 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001721 s.close()
1722 s = None
1723 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001724 break
1725 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001726 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001727 sys.exit(1)
1728 conn, addr = s.accept()
Martin Pantere37fc182016-04-24 04:24:36 +00001729 with conn:
1730 print('Connected by', addr)
1731 while True:
1732 data = conn.recv(1024)
1733 if not data: break
1734 conn.send(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001735
1736::
1737
1738 # Echo client program
1739 import socket
1740 import sys
1741
1742 HOST = 'daring.cwi.nl' # The remote host
1743 PORT = 50007 # The same port as used by the server
1744 s = None
1745 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1746 af, socktype, proto, canonname, sa = res
1747 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001748 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001749 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001750 s = None
1751 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001752 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001753 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001754 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001755 s.close()
1756 s = None
1757 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001758 break
1759 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001760 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001761 sys.exit(1)
Martin Pantere37fc182016-04-24 04:24:36 +00001762 with s:
1763 s.sendall(b'Hello, world')
1764 data = s.recv(1024)
Georg Brandl6911e3c2007-09-04 07:15:32 +00001765 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001766
Georg Brandl48310cd2009-01-03 21:18:54 +00001767
Charles-François Natali47413c12011-10-06 19:47:44 +02001768The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001769sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001770the interface::
1771
1772 import socket
1773
1774 # the public network interface
1775 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001776
Christian Heimesfaf2f632008-01-06 16:59:19 +00001777 # create a raw socket and bind it to the public interface
1778 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1779 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001780
Christian Heimesfaf2f632008-01-06 16:59:19 +00001781 # Include IP headers
1782 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001783
Christian Heimesfaf2f632008-01-06 16:59:19 +00001784 # receive all packages
1785 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001786
Christian Heimesfaf2f632008-01-06 16:59:19 +00001787 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001788 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001789
Christian Heimesc3f30c42008-02-22 16:37:40 +00001790 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001791 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001792
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -04001793The next example shows how to use the socket interface to communicate to a CAN
Charles-François Natali773e42d2013-02-05 19:42:01 +01001794network using the raw socket protocol. To use CAN with the broadcast
1795manager protocol instead, open a socket with::
1796
1797 socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1798
1799After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
Mark Dickinsond80b16d2013-02-10 18:43:16 +00001800can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
Charles-François Natali773e42d2013-02-05 19:42:01 +01001801their counterparts) on the socket object as usual.
1802
Pier-Yves Lessarda30f6d42017-08-28 04:32:44 -04001803This last example might require special privileges::
Charles-François Natali47413c12011-10-06 19:47:44 +02001804
1805 import socket
1806 import struct
1807
1808
Georg Brandla673eb82012-03-04 16:17:05 +01001809 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02001810
1811 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001812 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001813
1814 def build_can_frame(can_id, data):
1815 can_dlc = len(data)
1816 data = data.ljust(8, b'\x00')
1817 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1818
1819 def dissect_can_frame(frame):
1820 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1821 return (can_id, can_dlc, data[:can_dlc])
1822
1823
Georg Brandla673eb82012-03-04 16:17:05 +01001824 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02001825 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1826 s.bind(('vcan0',))
1827
1828 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001829 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001830
1831 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1832
1833 try:
1834 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001835 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001836 print('Error sending CAN frame')
1837
1838 try:
1839 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001840 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001841 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001842
Sandro Tosi172f3742011-09-02 20:06:31 +02001843Running an example several times with too small delay between executions, could
1844lead to this error::
1845
Antoine Pitrou5574c302011-10-12 17:53:43 +02001846 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001847
1848This is because the previous execution has left the socket in a ``TIME_WAIT``
1849state, and can't be immediately reused.
1850
1851There is a :mod:`socket` flag to set, in order to prevent this,
1852:data:`socket.SO_REUSEADDR`::
1853
1854 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1855 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1856 s.bind((HOST, PORT))
1857
1858the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1859``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1860
1861
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001862.. seealso::
1863
1864 For an introduction to socket programming (in C), see the following papers:
1865
1866 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1867
1868 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1869 al,
1870
1871 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1872 PS1:7 and PS1:8). The platform-specific reference material for the various
1873 socket-related system calls are also a valuable source of information on the
1874 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1875 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1876 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.