blob: 02f2350673bb76fa4456b96e8b816e4519cad569 [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
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000066- A pair ``(host, port)`` is used for the :const:`AF_INET` address family,
67 where *host* is a string representing either a hostname in Internet domain
68 notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``,
Sandro Tosi27b130e2012-06-14 00:37:09 +020069 and *port* is an integer.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000070
71- For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
72 scopeid)`` is used, where *flowinfo* and *scopeid* represent the ``sin6_flowinfo``
73 and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C. For
74 :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for
75 backward compatibility. Note, however, omission of *scopeid* can cause problems
76 in manipulating scoped IPv6 addresses.
77
78- :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``.
79
80- Linux-only support for TIPC is available using the :const:`AF_TIPC`
81 address family. TIPC is an open, non-IP based networked protocol designed
82 for use in clustered computer environments. Addresses are represented by a
83 tuple, and the fields depend on the address type. The general tuple form is
84 ``(addr_type, v1, v2, v3 [, scope])``, where:
85
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010086 - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`,
87 or :const:`TIPC_ADDR_ID`.
88 - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, and
89 :const:`TIPC_NODE_SCOPE`.
90 - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000091 the port identifier, and *v3* should be 0.
92
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010093 If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2*
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000094 is the lower port number, and *v3* is the upper port number.
95
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010096 If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000097 reference, and *v3* should be set to 0.
98
Charles-François Natali47413c12011-10-06 19:47:44 +020099- A tuple ``(interface, )`` is used for the :const:`AF_CAN` address family,
100 where *interface* is a string representing a network interface name like
101 ``'can0'``. The network interface name ``''`` can be used to receive packets
102 from all network interfaces of this family.
103
Martin v. Löwis9d6c6692012-02-03 17:44:58 +0100104- A string or a tuple ``(id, unit)`` is used for the :const:`SYSPROTO_CONTROL`
105 protocol of the :const:`PF_SYSTEM` family. The string is the name of a
106 kernel control using a dynamically-assigned ID. The tuple can be used if ID
107 and unit number of the kernel control are known or if a registered ID is
108 used.
109
110 .. versionadded:: 3.3
111
Martin Panterd1a98582015-09-09 06:47:58 +0000112- :const:`AF_BLUETOOTH` supports the following protocols and address
113 formats:
114
115 - :const:`BTPROTO_L2CAP` accepts ``(bdaddr, psm)`` where ``bdaddr`` is
116 the Bluetooth address as a string and ``psm`` is an integer.
117
118 - :const:`BTPROTO_RFCOMM` accepts ``(bdaddr, channel)`` where ``bdaddr``
119 is the Bluetooth address as a string and ``channel`` is an integer.
120
121 - :const:`BTPROTO_HCI` accepts ``(device_id,)`` where ``device_id`` is
122 either an integer or a string with the Bluetooth address of the
123 interface. (This depends on your OS; NetBSD and DragonFlyBSD expect
124 a Bluetooth address while everything else expects an integer.)
125
126 .. versionchanged:: 3.2
127 NetBSD and DragonFlyBSD support added.
128
129 - :const:`BTPROTO_SCO` accepts ``bdaddr`` where ``bdaddr`` is a
Martin Panterd8302622015-09-11 02:23:41 +0000130 :class:`bytes` object containing the Bluetooth address in a
Martin Panterd1a98582015-09-09 06:47:58 +0000131 string format. (ex. ``b'12:23:34:45:56:67'``) This protocol is not
132 supported under FreeBSD.
133
134- Certain other address families (:const:`AF_PACKET`, :const:`AF_CAN`)
135 support specific representations.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000136
137 .. XXX document them!
Georg Brandl116aa622007-08-15 14:28:22 +0000138
139For IPv4 addresses, two special forms are accepted instead of a host address:
140the empty string represents :const:`INADDR_ANY`, and the string
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000141``'<broadcast>'`` represents :const:`INADDR_BROADCAST`. This behavior is not
142compatible with IPv6, therefore, you may want to avoid these if you intend
143to support IPv6 with your Python programs.
Georg Brandl116aa622007-08-15 14:28:22 +0000144
145If you use a hostname in the *host* portion of IPv4/v6 socket address, the
146program may show a nondeterministic behavior, as Python uses the first address
147returned from the DNS resolution. The socket address will be resolved
148differently into an actual IPv4/v6 address, depending on the results from DNS
149resolution and/or the host configuration. For deterministic behavior use a
150numeric address in *host* portion.
151
Georg Brandl116aa622007-08-15 14:28:22 +0000152All errors raise exceptions. The normal exceptions for invalid argument types
Antoine Pitrou5574c302011-10-12 17:53:43 +0200153and out-of-memory conditions can be raised; starting from Python 3.3, errors
154related to socket or address semantics raise :exc:`OSError` or one of its
155subclasses (they used to raise :exc:`socket.error`).
Georg Brandl116aa622007-08-15 14:28:22 +0000156
Georg Brandl8569e582010-05-19 20:57:08 +0000157Non-blocking mode is supported through :meth:`~socket.setblocking`. A
158generalization of this based on timeouts is supported through
159:meth:`~socket.settimeout`.
Georg Brandl116aa622007-08-15 14:28:22 +0000160
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000161
162Module contents
163---------------
164
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100165The module :mod:`socket` exports the following elements.
Georg Brandl116aa622007-08-15 14:28:22 +0000166
167
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100168Exceptions
169^^^^^^^^^^
170
Georg Brandl116aa622007-08-15 14:28:22 +0000171.. exception:: error
172
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200173 A deprecated alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000174
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200175 .. versionchanged:: 3.3
176 Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000177
178
179.. exception:: herror
180
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200181 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000182 address-related errors, i.e. for functions that use *h_errno* in the POSIX
183 C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
184 The accompanying value is a pair ``(h_errno, string)`` representing an
185 error returned by a library call. *h_errno* is a numeric value, while
186 *string* represents the description of *h_errno*, as returned by the
187 :c:func:`hstrerror` C function.
Georg Brandl116aa622007-08-15 14:28:22 +0000188
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200189 .. versionchanged:: 3.3
190 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000191
192.. exception:: gaierror
193
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200194 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000195 address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
196 The accompanying value is a pair ``(error, string)`` representing an error
197 returned by a library call. *string* represents the description of
198 *error*, as returned by the :c:func:`gai_strerror` C function. The
199 numeric *error* value will match one of the :const:`EAI_\*` constants
200 defined in this module.
Georg Brandl116aa622007-08-15 14:28:22 +0000201
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200202 .. versionchanged:: 3.3
203 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000204
205.. exception:: timeout
206
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200207 A subclass of :exc:`OSError`, this exception is raised when a timeout
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000208 occurs on a socket which has had timeouts enabled via a prior call to
209 :meth:`~socket.settimeout` (or implicitly through
210 :func:`~socket.setdefaulttimeout`). The accompanying value is a string
211 whose value is currently always "timed out".
Georg Brandl116aa622007-08-15 14:28:22 +0000212
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200213 .. versionchanged:: 3.3
214 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000215
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100216
217Constants
218^^^^^^^^^
219
Ethan Furman7184bac2014-10-14 18:56:53 -0700220 The AF_* and SOCK_* constants are now :class:`AddressFamily` and
221 :class:`SocketKind` :class:`.IntEnum` collections.
222
223 .. versionadded:: 3.4
224
Georg Brandl116aa622007-08-15 14:28:22 +0000225.. data:: AF_UNIX
226 AF_INET
227 AF_INET6
228
229 These constants represent the address (and protocol) families, used for the
Ezio Melottic048d982013-04-17 04:10:26 +0300230 first argument to :func:`.socket`. If the :const:`AF_UNIX` constant is not
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000231 defined then this protocol is unsupported. More constants may be available
232 depending on the system.
Georg Brandl116aa622007-08-15 14:28:22 +0000233
234
235.. data:: SOCK_STREAM
236 SOCK_DGRAM
237 SOCK_RAW
238 SOCK_RDM
239 SOCK_SEQPACKET
240
241 These constants represent the socket types, used for the second argument to
Ezio Melottic048d982013-04-17 04:10:26 +0300242 :func:`.socket`. More constants may be available depending on the system.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000243 (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
244 useful.)
Georg Brandl116aa622007-08-15 14:28:22 +0000245
Antoine Pitroub1c54962010-10-14 15:05:38 +0000246.. data:: SOCK_CLOEXEC
247 SOCK_NONBLOCK
248
249 These two constants, if defined, can be combined with the socket types and
250 allow you to set some flags atomically (thus avoiding possible race
251 conditions and the need for separate calls).
252
253 .. seealso::
254
255 `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
256 for a more thorough explanation.
257
258 Availability: Linux >= 2.6.27.
259
260 .. versionadded:: 3.2
Georg Brandl116aa622007-08-15 14:28:22 +0000261
262.. data:: SO_*
263 SOMAXCONN
264 MSG_*
265 SOL_*
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000266 SCM_*
Georg Brandl116aa622007-08-15 14:28:22 +0000267 IPPROTO_*
268 IPPORT_*
269 INADDR_*
270 IP_*
271 IPV6_*
272 EAI_*
273 AI_*
274 NI_*
275 TCP_*
276
277 Many constants of these forms, documented in the Unix documentation on sockets
278 and/or the IP protocol, are also defined in the socket module. They are
279 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
280 methods of socket objects. In most cases, only those symbols that are defined
281 in the Unix header files are defined; for a few symbols, default values are
282 provided.
283
Charles-François Natali47413c12011-10-06 19:47:44 +0200284.. data:: AF_CAN
285 PF_CAN
286 SOL_CAN_*
287 CAN_*
288
289 Many constants of these forms, documented in the Linux documentation, are
290 also defined in the socket module.
291
292 Availability: Linux >= 2.6.25.
293
294 .. versionadded:: 3.3
295
Charles-François Natali773e42d2013-02-05 19:42:01 +0100296.. data:: CAN_BCM
297 CAN_BCM_*
298
299 CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol.
300 Broadcast manager constants, documented in the Linux documentation, are also
301 defined in the socket module.
302
303 Availability: Linux >= 2.6.25.
304
305 .. versionadded:: 3.4
Charles-François Natali47413c12011-10-06 19:47:44 +0200306
Larry Hastingsa6cc5512015-04-13 17:48:40 -0400307.. data:: CAN_RAW_FD_FRAMES
308
309 Enables CAN FD support in a CAN_RAW socket. This is disabled by default.
310 This allows your application to send both CAN and CAN FD frames; however,
311 you one must accept both CAN and CAN FD frames when reading from the socket.
312
313 This constant is documented in the Linux documentation.
314
315 Availability: Linux >= 3.6.
316
317 .. versionadded:: 3.5
318
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100319.. data:: AF_RDS
320 PF_RDS
321 SOL_RDS
322 RDS_*
323
324 Many constants of these forms, documented in the Linux documentation, are
325 also defined in the socket module.
326
327 Availability: Linux >= 2.6.30.
328
329 .. versionadded:: 3.3
330
331
Christian Heimesfaf2f632008-01-06 16:59:19 +0000332.. data:: SIO_*
333 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000334
Christian Heimesfaf2f632008-01-06 16:59:19 +0000335 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300336 :meth:`~socket.socket.ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000337
Georg Brandl116aa622007-08-15 14:28:22 +0000338
Christian Heimes043d6f62008-01-07 17:19:16 +0000339.. data:: TIPC_*
340
341 TIPC related constants, matching the ones exported by the C socket API. See
342 the TIPC documentation for more information.
343
Giampaolo Rodola'80e1c432013-05-21 21:02:04 +0200344.. data:: AF_LINK
345
346 Availability: BSD, OSX.
347
348 .. versionadded:: 3.4
Christian Heimes043d6f62008-01-07 17:19:16 +0000349
Georg Brandl116aa622007-08-15 14:28:22 +0000350.. data:: has_ipv6
351
352 This constant contains a boolean value which indicates if IPv6 is supported on
353 this platform.
354
Martin Panterea7266d2015-09-11 23:14:57 +0000355.. data:: BDADDR_ANY
356 BDADDR_LOCAL
357
358 These are string constants containing Bluetooth addresses with special
359 meanings. For example, :const:`BDADDR_ANY` can be used to indicate
360 any address when specifying the binding socket with
361 :const:`BTPROTO_RFCOMM`.
362
363.. data:: HCI_FILTER
364 HCI_TIME_STAMP
365 HCI_DATA_DIR
366
367 For use with :const:`BTPROTO_HCI`. :const:`HCI_FILTER` is not
368 available for NetBSD or DragonFlyBSD. :const:`HCI_TIME_STAMP` and
369 :const:`HCI_DATA_DIR` are not available for FreeBSD, NetBSD, or
370 DragonFlyBSD.
Georg Brandl116aa622007-08-15 14:28:22 +0000371
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100372Functions
373^^^^^^^^^
374
375Creating sockets
376''''''''''''''''
377
378The following functions all create :ref:`socket objects <socket-objects>`.
379
380
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100381.. function:: socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100382
383 Create a new socket using the given address family, socket type and protocol
384 number. The address family should be :const:`AF_INET` (the default),
385 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
386 socket type should be :const:`SOCK_STREAM` (the default),
387 :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100388 constants. The protocol number is usually zero and may be omitted or in the
389 case where the address family is :const:`AF_CAN` the protocol should be one
Berker Peksag24a61092015-10-08 06:34:01 +0300390 of :const:`CAN_RAW` or :const:`CAN_BCM`. If *fileno* is specified, the other
391 arguments are ignored, causing the socket with the specified file descriptor
392 to return. Unlike :func:`socket.fromfd`, *fileno* will return the same
393 socket and not a duplicate. This may help close a detached socket using
394 :meth:`socket.close()`.
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100395
396 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100397
398 .. versionchanged:: 3.3
399 The AF_CAN family was added.
400 The AF_RDS family was added.
401
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100402 .. versionchanged:: 3.4
403 The CAN_BCM protocol was added.
404
405 .. versionchanged:: 3.4
406 The returned socket is now non-inheritable.
407
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100408
409.. function:: socketpair([family[, type[, proto]]])
410
411 Build a pair of connected socket objects using the given address family, socket
412 type, and protocol number. Address family, socket type, and protocol number are
413 as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
414 if defined on the platform; otherwise, the default is :const:`AF_INET`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100415
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100416 The newly created sockets are :ref:`non-inheritable <fd_inheritance>`.
417
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100418 .. versionchanged:: 3.2
419 The returned socket objects now support the whole socket API, rather
420 than a subset.
421
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100422 .. versionchanged:: 3.4
423 The returned sockets are now non-inheritable.
424
Charles-François Natali98c745a2014-10-14 21:22:44 +0100425 .. versionchanged:: 3.5
426 Windows support added.
427
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100428
Gregory P. Smithb4066372010-01-03 03:28:29 +0000429.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000430
Antoine Pitrou889a5102012-01-12 08:06:19 +0100431 Connect to a TCP service listening on the Internet *address* (a 2-tuple
432 ``(host, port)``), and return the socket object. This is a higher-level
433 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
434 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
435 and then try to connect to all possible addresses in turn until a
436 connection succeeds. This makes it easy to write clients that are
437 compatible to both IPv4 and IPv6.
438
439 Passing the optional *timeout* parameter will set the timeout on the
440 socket instance before attempting to connect. If no *timeout* is
441 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000442 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000443
Gregory P. Smithb4066372010-01-03 03:28:29 +0000444 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
445 socket to bind to as its source address before connecting. If host or port
446 are '' or 0 respectively the OS default behavior will be used.
447
448 .. versionchanged:: 3.2
449 *source_address* was added.
450
Georg Brandl116aa622007-08-15 14:28:22 +0000451
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100452.. function:: fromfd(fd, family, type, proto=0)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100453
454 Duplicate the file descriptor *fd* (an integer as returned by a file object's
455 :meth:`fileno` method) and build a socket object from the result. Address
456 family, socket type and protocol number are as for the :func:`.socket` function
457 above. The file descriptor should refer to a socket, but this is not checked ---
458 subsequent operations on the object may fail if the file descriptor is invalid.
459 This function is rarely needed, but can be used to get or set socket options on
460 a socket passed to a program as standard input or output (such as a server
461 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
462
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100463 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
464
465 .. versionchanged:: 3.4
466 The returned socket is now non-inheritable.
467
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100468
469.. function:: fromshare(data)
470
471 Instantiate a socket from data obtained from the :meth:`socket.share`
472 method. The socket is assumed to be in blocking mode.
473
474 Availability: Windows.
475
476 .. versionadded:: 3.3
477
478
479.. data:: SocketType
480
481 This is a Python type object that represents the socket object type. It is the
482 same as ``type(socket(...))``.
483
484
485Other functions
486'''''''''''''''
487
488The :mod:`socket` module also offers various network-related services:
489
490
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000491.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000492
Antoine Pitrou91035972010-05-31 17:04:40 +0000493 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
494 all the necessary arguments for creating a socket connected to that service.
495 *host* is a domain name, a string representation of an IPv4/v6 address
496 or ``None``. *port* is a string service name such as ``'http'``, a numeric
497 port number or ``None``. By passing ``None`` as the value of *host*
498 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000499
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000500 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000501 in order to narrow the list of addresses returned. Passing zero as a
502 value for each of these arguments selects the full range of results.
503 The *flags* argument can be one or several of the ``AI_*`` constants,
504 and will influence how results are computed and returned.
505 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
506 and will raise an error if *host* is a domain name.
507
508 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000509
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000510 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000511
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000512 In these tuples, *family*, *type*, *proto* are all integers and are
Ezio Melottic048d982013-04-17 04:10:26 +0300513 meant to be passed to the :func:`.socket` function. *canonname* will be
Antoine Pitrou91035972010-05-31 17:04:40 +0000514 a string representing the canonical name of the *host* if
515 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
516 will be empty. *sockaddr* is a tuple describing a socket address, whose
517 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
518 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
519 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
520 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000521
Antoine Pitrou91035972010-05-31 17:04:40 +0000522 The following example fetches address information for a hypothetical TCP
Ned Deily11cf4f62015-06-01 21:19:30 -0700523 connection to ``example.org`` on port 80 (results may differ on your
Antoine Pitrou91035972010-05-31 17:04:40 +0000524 system if IPv6 isn't enabled)::
525
Ned Deily11cf4f62015-06-01 21:19:30 -0700526 >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
Ned Deily1b79e2d2015-06-01 18:52:48 -0700527 [(<AddressFamily.AF_INET6: 10>, <SocketType.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700528 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
Ned Deily1b79e2d2015-06-01 18:52:48 -0700529 (<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700530 6, '', ('93.184.216.34', 80))]
Georg Brandl116aa622007-08-15 14:28:22 +0000531
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000532 .. versionchanged:: 3.2
Andrew Kuchling46ff4ee2014-02-15 16:39:37 -0500533 parameters can now be passed using keyword arguments.
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000534
Georg Brandl116aa622007-08-15 14:28:22 +0000535.. function:: getfqdn([name])
536
537 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
538 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000539 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000540 host, if available. The first name which includes a period is selected. In
541 case no fully qualified domain name is available, the hostname as returned by
542 :func:`gethostname` is returned.
543
Georg Brandl116aa622007-08-15 14:28:22 +0000544
545.. function:: gethostbyname(hostname)
546
547 Translate a host name to IPv4 address format. The IPv4 address is returned as a
548 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
549 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
550 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
551 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
552
553
554.. function:: gethostbyname_ex(hostname)
555
556 Translate a host name to IPv4 address format, extended interface. Return a
557 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
558 host name responding to the given *ip_address*, *aliaslist* is a (possibly
559 empty) list of alternative host names for the same address, and *ipaddrlist* is
560 a list of IPv4 addresses for the same interface on the same host (often but not
561 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
562 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
563 stack support.
564
565
566.. function:: gethostname()
567
568 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000569 interpreter is currently executing.
570
Benjamin Peterson65676e42008-11-05 21:42:45 +0000571 Note: :func:`gethostname` doesn't always return the fully qualified domain
Berker Peksag2a8baed2015-05-19 01:31:00 +0300572 name; use :func:`getfqdn` for that.
Georg Brandl116aa622007-08-15 14:28:22 +0000573
574
575.. function:: gethostbyaddr(ip_address)
576
577 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
578 primary host name responding to the given *ip_address*, *aliaslist* is a
579 (possibly empty) list of alternative host names for the same address, and
580 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
581 host (most likely containing only a single address). To find the fully qualified
582 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
583 both IPv4 and IPv6.
584
585
586.. function:: getnameinfo(sockaddr, flags)
587
588 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
589 on the settings of *flags*, the result can contain a fully-qualified domain name
590 or numeric address representation in *host*. Similarly, *port* can contain a
591 string port name or a numeric port number.
592
Georg Brandl116aa622007-08-15 14:28:22 +0000593
594.. function:: getprotobyname(protocolname)
595
596 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
Ezio Melottic048d982013-04-17 04:10:26 +0300597 suitable for passing as the (optional) third argument to the :func:`.socket`
Georg Brandl116aa622007-08-15 14:28:22 +0000598 function. This is usually only needed for sockets opened in "raw" mode
599 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
600 automatically if the protocol is omitted or zero.
601
602
603.. function:: getservbyname(servicename[, protocolname])
604
605 Translate an Internet service name and protocol name to a port number for that
606 service. The optional protocol name, if given, should be ``'tcp'`` or
607 ``'udp'``, otherwise any protocol will match.
608
609
610.. function:: getservbyport(port[, protocolname])
611
612 Translate an Internet port number and protocol name to a service name for that
613 service. The optional protocol name, if given, should be ``'tcp'`` or
614 ``'udp'``, otherwise any protocol will match.
615
616
Georg Brandl116aa622007-08-15 14:28:22 +0000617.. function:: ntohl(x)
618
619 Convert 32-bit positive integers from network to host byte order. On machines
620 where the host byte order is the same as network byte order, this is a no-op;
621 otherwise, it performs a 4-byte swap operation.
622
623
624.. function:: ntohs(x)
625
626 Convert 16-bit positive integers from network to host byte order. On machines
627 where the host byte order is the same as network byte order, this is a no-op;
628 otherwise, it performs a 2-byte swap operation.
629
630
631.. function:: htonl(x)
632
633 Convert 32-bit positive integers from host to network byte order. On machines
634 where the host byte order is the same as network byte order, this is a no-op;
635 otherwise, it performs a 4-byte swap operation.
636
637
638.. function:: htons(x)
639
640 Convert 16-bit positive integers from host to network byte order. On machines
641 where the host byte order is the same as network byte order, this is a no-op;
642 otherwise, it performs a 2-byte swap operation.
643
644
645.. function:: inet_aton(ip_string)
646
647 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000648 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000649 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000650 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000651 for the 32-bit packed binary this function returns.
652
Georg Brandlf5123ef2009-06-04 10:28:36 +0000653 :func:`inet_aton` also accepts strings with less than three dots; see the
654 Unix manual page :manpage:`inet(3)` for details.
655
Georg Brandl116aa622007-08-15 14:28:22 +0000656 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200657 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000658 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000659
Georg Brandl5f259722009-05-04 20:50:30 +0000660 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000661 instead for IPv4/v6 dual stack support.
662
663
664.. function:: inet_ntoa(packed_ip)
665
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200666 Convert a 32-bit packed IPv4 address (a :term:`bytes-like object` four
667 bytes in length) to its standard dotted-quad string representation (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000668 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000669 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000670 is the C type for the 32-bit packed binary data this function takes as an
671 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000672
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000673 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200674 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000675 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000676 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000677
Georg Brandl8c16cb92016-02-25 20:17:45 +0100678 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200679 Writable :term:`bytes-like object` is now accepted.
680
Georg Brandl116aa622007-08-15 14:28:22 +0000681
682.. function:: inet_pton(address_family, ip_string)
683
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000684 Convert an IP address from its family-specific string format to a packed,
685 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000686 calls for an object of type :c:type:`struct in_addr` (similar to
687 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000688
689 Supported values for *address_family* are currently :const:`AF_INET` and
690 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200691 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000692 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000693 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000694
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900695 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000696
R David Murray6c501012014-03-07 21:22:39 -0500697 .. versionchanged:: 3.4
698 Windows support added
699
Georg Brandl116aa622007-08-15 14:28:22 +0000700
701.. function:: inet_ntop(address_family, packed_ip)
702
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200703 Convert a packed IP address (a :term:`bytes-like object` of some number of
704 bytes) to its standard, family-specific string representation (for
705 example, ``'7.10.0.5'`` or ``'5aef:2b::8'``).
706 :func:`inet_ntop` is useful when a library or network protocol returns an
707 object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`) or
708 :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000709
710 Supported values for *address_family* are currently :const:`AF_INET` and
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200711 :const:`AF_INET6`. If the bytes object *packed_ip* is not the correct
712 length for the specified address family, :exc:`ValueError` will be raised.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200713 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000714
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900715 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000716
R David Murray6c501012014-03-07 21:22:39 -0500717 .. versionchanged:: 3.4
718 Windows support added
719
Georg Brandl8c16cb92016-02-25 20:17:45 +0100720 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200721 Writable :term:`bytes-like object` is now accepted.
722
Georg Brandl116aa622007-08-15 14:28:22 +0000723
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000724..
725 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
726 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
727 interface, in which struct msghdr has no msg_control or
728 msg_controllen members, is not currently supported.
729
730.. function:: CMSG_LEN(length)
731
732 Return the total length, without trailing padding, of an ancillary
733 data item with associated data of the given *length*. This value
734 can often be used as the buffer size for :meth:`~socket.recvmsg` to
735 receive a single item of ancillary data, but :rfc:`3542` requires
736 portable applications to use :func:`CMSG_SPACE` and thus include
737 space for padding, even when the item will be the last in the
738 buffer. Raises :exc:`OverflowError` if *length* is outside the
739 permissible range of values.
740
741 Availability: most Unix platforms, possibly others.
742
743 .. versionadded:: 3.3
744
745
746.. function:: CMSG_SPACE(length)
747
748 Return the buffer size needed for :meth:`~socket.recvmsg` to
749 receive an ancillary data item with associated data of the given
750 *length*, along with any trailing padding. The buffer space needed
751 to receive multiple items is the sum of the :func:`CMSG_SPACE`
752 values for their associated data lengths. Raises
753 :exc:`OverflowError` if *length* is outside the permissible range
754 of values.
755
756 Note that some systems might support ancillary data without
757 providing this function. Also note that setting the buffer size
758 using the results of this function may not precisely limit the
759 amount of ancillary data that can be received, since additional
760 data may be able to fit into the padding area.
761
762 Availability: most Unix platforms, possibly others.
763
764 .. versionadded:: 3.3
765
766
Georg Brandl116aa622007-08-15 14:28:22 +0000767.. function:: getdefaulttimeout()
768
Ezio Melotti388c9452011-08-14 08:28:57 +0300769 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000770 of ``None`` indicates that new socket objects have no timeout. When the socket
771 module is first imported, the default is ``None``.
772
Georg Brandl116aa622007-08-15 14:28:22 +0000773
774.. function:: setdefaulttimeout(timeout)
775
Ezio Melotti388c9452011-08-14 08:28:57 +0300776 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000777 the socket module is first imported, the default is ``None``. See
778 :meth:`~socket.settimeout` for possible values and their respective
779 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000780
Georg Brandl116aa622007-08-15 14:28:22 +0000781
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000782.. function:: sethostname(name)
783
Serhiy Storchakad65c9492015-11-02 14:10:23 +0200784 Set the machine's hostname to *name*. This will raise an
Antoine Pitrou5574c302011-10-12 17:53:43 +0200785 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000786
787 Availability: Unix.
788
789 .. versionadded:: 3.3
790
791
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700792.. function:: if_nameindex()
793
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700794 Return a list of network interface information
795 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200796 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700797
798 Availability: Unix.
799
800 .. versionadded:: 3.3
801
802
803.. function:: if_nametoindex(if_name)
804
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700805 Return a network interface index number corresponding to an
806 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200807 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700808
809 Availability: Unix.
810
811 .. versionadded:: 3.3
812
813
814.. function:: if_indextoname(if_index)
815
Serhiy Storchakad65c9492015-11-02 14:10:23 +0200816 Return a network interface name corresponding to an
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700817 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200818 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700819
820 Availability: Unix.
821
822 .. versionadded:: 3.3
823
824
Georg Brandl116aa622007-08-15 14:28:22 +0000825.. _socket-objects:
826
827Socket Objects
828--------------
829
Antoine Pitroue3658a72013-12-04 21:02:42 +0100830Socket objects have the following methods. Except for
831:meth:`~socket.makefile`, these correspond to Unix system calls applicable
832to sockets.
Georg Brandl116aa622007-08-15 14:28:22 +0000833
Martin Pantere37fc182016-04-24 04:24:36 +0000834.. versionchanged:: 3.2
835 Support for the :term:`context manager` protocol was added. Exiting the
836 context manager is equivalent to calling :meth:`~socket.close`.
837
Georg Brandl116aa622007-08-15 14:28:22 +0000838
839.. method:: socket.accept()
840
841 Accept a connection. The socket must be bound to an address and listening for
842 connections. The return value is a pair ``(conn, address)`` where *conn* is a
843 *new* socket object usable to send and receive data on the connection, and
844 *address* is the address bound to the socket on the other end of the connection.
845
Victor Stinnerdaf45552013-08-28 00:53:59 +0200846 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
847
848 .. versionchanged:: 3.4
849 The socket is now non-inheritable.
850
Victor Stinner708d9ba2015-04-02 11:49:42 +0200851 .. versionchanged:: 3.5
852 If the system call is interrupted and the signal handler does not raise
853 an exception, the method now retries the system call instead of raising
854 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
855
Georg Brandl116aa622007-08-15 14:28:22 +0000856
857.. method:: socket.bind(address)
858
859 Bind the socket to *address*. The socket must not already be bound. (The format
860 of *address* depends on the address family --- see above.)
861
Georg Brandl116aa622007-08-15 14:28:22 +0000862
863.. method:: socket.close()
864
Antoine Pitroue3658a72013-12-04 21:02:42 +0100865 Mark the socket closed. The underlying system resource (e.g. a file
866 descriptor) is also closed when all file objects from :meth:`makefile()`
867 are closed. Once that happens, all future operations on the socket
868 object will fail. The remote end will receive no more data (after
869 queued data is flushed).
870
871 Sockets are automatically closed when they are garbage-collected, but
872 it is recommended to :meth:`close` them explicitly, or to use a
873 :keyword:`with` statement around them.
Georg Brandl116aa622007-08-15 14:28:22 +0000874
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000875 .. note::
Éric Araujofa5e6e42014-03-12 19:51:00 -0400876
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000877 :meth:`close()` releases the resource associated with a connection but
878 does not necessarily close the connection immediately. If you want
879 to close the connection in a timely fashion, call :meth:`shutdown()`
880 before :meth:`close()`.
881
Georg Brandl116aa622007-08-15 14:28:22 +0000882
883.. method:: socket.connect(address)
884
885 Connect to a remote socket at *address*. (The format of *address* depends on the
886 address family --- see above.)
887
Victor Stinner81c41db2015-04-02 11:50:57 +0200888 If the connection is interrupted by a signal, the method waits until the
889 connection completes, or raise a :exc:`socket.timeout` on timeout, if the
890 signal handler doesn't raise an exception and the socket is blocking or has
891 a timeout. For non-blocking sockets, the method raises an
892 :exc:`InterruptedError` exception if the connection is interrupted by a
893 signal (or the exception raised by the signal handler).
894
895 .. versionchanged:: 3.5
896 The method now waits until the connection completes instead of raising an
897 :exc:`InterruptedError` exception if the connection is interrupted by a
898 signal, the signal handler doesn't raise an exception and the socket is
899 blocking or has a timeout (see the :pep:`475` for the rationale).
900
Georg Brandl116aa622007-08-15 14:28:22 +0000901
902.. method:: socket.connect_ex(address)
903
904 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +0000905 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +0000906 problems, such as "host not found," can still raise exceptions). The error
907 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +0000908 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +0000909 connects.
910
Georg Brandl116aa622007-08-15 14:28:22 +0000911
Antoine Pitrou6e451df2010-08-09 20:39:54 +0000912.. method:: socket.detach()
913
914 Put the socket object into closed state without actually closing the
915 underlying file descriptor. The file descriptor is returned, and can
916 be reused for other purposes.
917
918 .. versionadded:: 3.2
919
920
Victor Stinnerdaf45552013-08-28 00:53:59 +0200921.. method:: socket.dup()
922
923 Duplicate the socket.
924
925 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
926
927 .. versionchanged:: 3.4
928 The socket is now non-inheritable.
929
930
Georg Brandl116aa622007-08-15 14:28:22 +0000931.. method:: socket.fileno()
932
Kushal Das89beb272016-06-04 10:20:12 -0700933 Return the socket's file descriptor (a small integer), or -1 on failure. This
934 is useful with :func:`select.select`.
Georg Brandl116aa622007-08-15 14:28:22 +0000935
936 Under Windows the small integer returned by this method cannot be used where a
937 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
938 this limitation.
939
Victor Stinnerdaf45552013-08-28 00:53:59 +0200940.. method:: socket.get_inheritable()
941
942 Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file
943 descriptor or socket's handle: ``True`` if the socket can be inherited in
944 child processes, ``False`` if it cannot.
945
946 .. versionadded:: 3.4
947
948
Georg Brandl116aa622007-08-15 14:28:22 +0000949.. method:: socket.getpeername()
950
951 Return the remote address to which the socket is connected. This is useful to
952 find out the port number of a remote IPv4/v6 socket, for instance. (The format
953 of the address returned depends on the address family --- see above.) On some
954 systems this function is not supported.
955
956
957.. method:: socket.getsockname()
958
959 Return the socket's own address. This is useful to find out the port number of
960 an IPv4/v6 socket, for instance. (The format of the address returned depends on
961 the address family --- see above.)
962
963
964.. method:: socket.getsockopt(level, optname[, buflen])
965
966 Return the value of the given socket option (see the Unix man page
967 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
968 are defined in this module. If *buflen* is absent, an integer option is assumed
969 and its integer value is returned by the function. If *buflen* is present, it
970 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000971 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +0000972 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000973 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +0000974
Georg Brandl48310cd2009-01-03 21:18:54 +0000975
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000976.. method:: socket.gettimeout()
977
Ezio Melotti388c9452011-08-14 08:28:57 +0300978 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000979 or ``None`` if no timeout is set. This reflects the last call to
980 :meth:`setblocking` or :meth:`settimeout`.
981
982
Christian Heimesfaf2f632008-01-06 16:59:19 +0000983.. method:: socket.ioctl(control, option)
984
Georg Brandl48310cd2009-01-03 21:18:54 +0000985 :platform: Windows
986
Christian Heimes679db4a2008-01-18 09:56:22 +0000987 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +0000988 interface. Please refer to the `Win32 documentation
Georg Brandl5d941342016-02-26 19:37:12 +0100989 <https://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
Georg Brandl8569e582010-05-19 20:57:08 +0000990 information.
Georg Brandl48310cd2009-01-03 21:18:54 +0000991
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000992 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
993 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000994
Charles-François Natali644b8f52014-05-22 19:45:39 +0100995.. method:: socket.listen([backlog])
Georg Brandl116aa622007-08-15 14:28:22 +0000996
Charles-François Natali644b8f52014-05-22 19:45:39 +0100997 Enable a server to accept connections. If *backlog* is specified, it must
998 be at least 0 (if it is lower, it is set to 0); it specifies the number of
999 unaccepted connections that the system will allow before refusing new
1000 connections. If not specified, a default reasonable value is chosen.
Georg Brandl116aa622007-08-15 14:28:22 +00001001
Charles-François Natali644b8f52014-05-22 19:45:39 +01001002 .. versionchanged:: 3.5
1003 The *backlog* parameter is now optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001004
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001005.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
1006 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001007
1008 .. index:: single: I/O control; buffering
1009
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001010 Return a :term:`file object` associated with the socket. The exact returned
1011 type depends on the arguments given to :meth:`makefile`. These arguments are
Berker Peksag3fe64d02016-02-18 17:34:00 +02001012 interpreted the same way as by the built-in :func:`open` function, except
1013 the only supported *mode* values are ``'r'`` (default), ``'w'`` and ``'b'``.
Georg Brandl116aa622007-08-15 14:28:22 +00001014
Antoine Pitroue3658a72013-12-04 21:02:42 +01001015 The socket must be in blocking mode; it can have a timeout, but the file
Martin Panter7462b6492015-11-02 03:37:02 +00001016 object's internal buffer may end up in an inconsistent state if a timeout
Antoine Pitroue3658a72013-12-04 21:02:42 +01001017 occurs.
1018
1019 Closing the file object returned by :meth:`makefile` won't close the
1020 original socket unless all other file objects have been closed and
1021 :meth:`socket.close` has been called on the socket object.
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001022
1023 .. note::
1024
1025 On Windows, the file-like object created by :meth:`makefile` cannot be
1026 used where a file object with a file descriptor is expected, such as the
1027 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +00001028
Georg Brandl116aa622007-08-15 14:28:22 +00001029
1030.. method:: socket.recv(bufsize[, flags])
1031
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001032 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +00001033 data received. The maximum amount of data to be received at once is specified
1034 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
1035 the optional argument *flags*; it defaults to zero.
1036
1037 .. note::
1038
1039 For best match with hardware and network realities, the value of *bufsize*
1040 should be a relatively small power of 2, for example, 4096.
1041
Victor Stinner708d9ba2015-04-02 11:49:42 +02001042 .. versionchanged:: 3.5
1043 If the system call is interrupted and the signal handler does not raise
1044 an exception, the method now retries the system call instead of raising
1045 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1046
Georg Brandl116aa622007-08-15 14:28:22 +00001047
1048.. method:: socket.recvfrom(bufsize[, flags])
1049
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001050 Receive data from the socket. The return value is a pair ``(bytes, address)``
1051 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +00001052 address of the socket sending the data. See the Unix manual page
1053 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
1054 to zero. (The format of *address* depends on the address family --- see above.)
1055
Victor Stinner708d9ba2015-04-02 11:49:42 +02001056 .. versionchanged:: 3.5
1057 If the system call is interrupted and the signal handler does not raise
1058 an exception, the method now retries the system call instead of raising
1059 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1060
Georg Brandl116aa622007-08-15 14:28:22 +00001061
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001062.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
1063
1064 Receive normal data (up to *bufsize* bytes) and ancillary data from
1065 the socket. The *ancbufsize* argument sets the size in bytes of
1066 the internal buffer used to receive the ancillary data; it defaults
1067 to 0, meaning that no ancillary data will be received. Appropriate
1068 buffer sizes for ancillary data can be calculated using
1069 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
1070 into the buffer might be truncated or discarded. The *flags*
1071 argument defaults to 0 and has the same meaning as for
1072 :meth:`recv`.
1073
1074 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
1075 address)``. The *data* item is a :class:`bytes` object holding the
1076 non-ancillary data received. The *ancdata* item is a list of zero
1077 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
1078 the ancillary data (control messages) received: *cmsg_level* and
1079 *cmsg_type* are integers specifying the protocol level and
1080 protocol-specific type respectively, and *cmsg_data* is a
1081 :class:`bytes` object holding the associated data. The *msg_flags*
1082 item is the bitwise OR of various flags indicating conditions on
1083 the received message; see your system documentation for details.
1084 If the receiving socket is unconnected, *address* is the address of
1085 the sending socket, if available; otherwise, its value is
1086 unspecified.
1087
1088 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
1089 pass file descriptors between processes over an :const:`AF_UNIX`
1090 socket. When this facility is used (it is often restricted to
1091 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
1092 ancillary data, items of the form ``(socket.SOL_SOCKET,
1093 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
1094 representing the new file descriptors as a binary array of the
1095 native C :c:type:`int` type. If :meth:`recvmsg` raises an
1096 exception after the system call returns, it will first attempt to
1097 close any file descriptors received via this mechanism.
1098
1099 Some systems do not indicate the truncated length of ancillary data
1100 items which have been only partially received. If an item appears
1101 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
1102 a :exc:`RuntimeWarning`, and will return the part of it which is
1103 inside the buffer provided it has not been truncated before the
1104 start of its associated data.
1105
1106 On systems which support the :const:`SCM_RIGHTS` mechanism, the
1107 following function will receive up to *maxfds* file descriptors,
1108 returning the message data and a list containing the descriptors
1109 (while ignoring unexpected conditions such as unrelated control
1110 messages being received). See also :meth:`sendmsg`. ::
1111
1112 import socket, array
1113
1114 def recv_fds(sock, msglen, maxfds):
1115 fds = array.array("i") # Array of ints
1116 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1117 for cmsg_level, cmsg_type, cmsg_data in ancdata:
1118 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
1119 # Append data, ignoring any truncated integers at the end.
1120 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
1121 return msg, list(fds)
1122
1123 Availability: most Unix platforms, possibly others.
1124
1125 .. versionadded:: 3.3
1126
Victor Stinner708d9ba2015-04-02 11:49:42 +02001127 .. versionchanged:: 3.5
1128 If the system call is interrupted and the signal handler does not raise
1129 an exception, the method now retries the system call instead of raising
1130 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1131
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001132
1133.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1134
1135 Receive normal data and ancillary data from the socket, behaving as
1136 :meth:`recvmsg` would, but scatter the non-ancillary data into a
1137 series of buffers instead of returning a new bytes object. The
1138 *buffers* argument must be an iterable of objects that export
1139 writable buffers (e.g. :class:`bytearray` objects); these will be
1140 filled with successive chunks of the non-ancillary data until it
1141 has all been written or there are no more buffers. The operating
1142 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1143 on the number of buffers that can be used. The *ancbufsize* and
1144 *flags* arguments have the same meaning as for :meth:`recvmsg`.
1145
1146 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1147 address)``, where *nbytes* is the total number of bytes of
1148 non-ancillary data written into the buffers, and *ancdata*,
1149 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1150
1151 Example::
1152
1153 >>> import socket
1154 >>> s1, s2 = socket.socketpair()
1155 >>> b1 = bytearray(b'----')
1156 >>> b2 = bytearray(b'0123456789')
1157 >>> b3 = bytearray(b'--------------')
1158 >>> s1.send(b'Mary had a little lamb')
1159 22
1160 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1161 (22, [], 0, None)
1162 >>> [b1, b2, b3]
1163 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1164
1165 Availability: most Unix platforms, possibly others.
1166
1167 .. versionadded:: 3.3
1168
1169
Georg Brandl116aa622007-08-15 14:28:22 +00001170.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1171
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001172 Receive data from the socket, writing it into *buffer* instead of creating a
1173 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +00001174 the number of bytes received and *address* is the address of the socket sending
1175 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
1176 optional argument *flags*; it defaults to zero. (The format of *address*
1177 depends on the address family --- see above.)
1178
Georg Brandl116aa622007-08-15 14:28:22 +00001179
1180.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1181
1182 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001183 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +00001184 receive up to the size available in the given buffer. Returns the number of
1185 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
1186 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001187
Georg Brandl116aa622007-08-15 14:28:22 +00001188
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001189.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001190
1191 Send data to the socket. The socket must be connected to a remote socket. The
1192 optional *flags* argument has the same meaning as for :meth:`recv` above.
1193 Returns the number of bytes sent. Applications are responsible for checking that
1194 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001195 application needs to attempt delivery of the remaining data. For further
1196 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +00001197
Victor Stinner708d9ba2015-04-02 11:49:42 +02001198 .. versionchanged:: 3.5
1199 If the system call is interrupted and the signal handler does not raise
1200 an exception, the method now retries the system call instead of raising
1201 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1202
Georg Brandl116aa622007-08-15 14:28:22 +00001203
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001204.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001205
1206 Send data to the socket. The socket must be connected to a remote socket. The
1207 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001208 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001209 either all data has been sent or an error occurs. ``None`` is returned on
1210 success. On error, an exception is raised, and there is no way to determine how
1211 much data, if any, was successfully sent.
1212
Victor Stinner708d9ba2015-04-02 11:49:42 +02001213 .. versionchanged:: 3.5
Martin Pantereb995702016-07-28 01:11:04 +00001214 The socket timeout is no more reset each time data is sent successfully.
Victor Stinner8912d142015-04-06 23:16:34 +02001215 The socket timeout is now the maximum total duration to send all data.
1216
1217 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001218 If the system call is interrupted and the signal handler does not raise
1219 an exception, the method now retries the system call instead of raising
1220 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1221
Georg Brandl116aa622007-08-15 14:28:22 +00001222
Ezio Melottie0add762012-09-14 06:32:35 +03001223.. method:: socket.sendto(bytes, address)
1224 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001225
1226 Send data to the socket. The socket should not be connected to a remote socket,
1227 since the destination socket is specified by *address*. The optional *flags*
1228 argument has the same meaning as for :meth:`recv` above. Return the number of
1229 bytes sent. (The format of *address* depends on the address family --- see
1230 above.)
1231
Victor Stinner708d9ba2015-04-02 11:49:42 +02001232 .. versionchanged:: 3.5
1233 If the system call is interrupted and the signal handler does not raise
1234 an exception, the method now retries the system call instead of raising
1235 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1236
Georg Brandl116aa622007-08-15 14:28:22 +00001237
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001238.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1239
1240 Send normal and ancillary data to the socket, gathering the
1241 non-ancillary data from a series of buffers and concatenating it
1242 into a single message. The *buffers* argument specifies the
Serhiy Storchakab757c832014-12-05 22:25:22 +02001243 non-ancillary data as an iterable of
1244 :term:`bytes-like objects <bytes-like object>`
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001245 (e.g. :class:`bytes` objects); the operating system may set a limit
1246 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1247 that can be used. The *ancdata* argument specifies the ancillary
1248 data (control messages) as an iterable of zero or more tuples
1249 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1250 *cmsg_type* are integers specifying the protocol level and
1251 protocol-specific type respectively, and *cmsg_data* is a
Serhiy Storchakab757c832014-12-05 22:25:22 +02001252 bytes-like object holding the associated data. Note that
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001253 some systems (in particular, systems without :func:`CMSG_SPACE`)
1254 might support sending only one control message per call. The
1255 *flags* argument defaults to 0 and has the same meaning as for
1256 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1257 destination address for the message. The return value is the
1258 number of bytes of non-ancillary data sent.
1259
1260 The following function sends the list of file descriptors *fds*
1261 over an :const:`AF_UNIX` socket, on systems which support the
1262 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1263
1264 import socket, array
1265
1266 def send_fds(sock, msg, fds):
1267 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1268
1269 Availability: most Unix platforms, possibly others.
1270
1271 .. versionadded:: 3.3
1272
Victor Stinner708d9ba2015-04-02 11:49:42 +02001273 .. versionchanged:: 3.5
1274 If the system call is interrupted and the signal handler does not raise
1275 an exception, the method now retries the system call instead of raising
1276 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1277
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001278.. method:: socket.sendfile(file, offset=0, count=None)
1279
1280 Send a file until EOF is reached by using high-performance
1281 :mod:`os.sendfile` and return the total number of bytes which were sent.
1282 *file* must be a regular file object opened in binary mode. If
1283 :mod:`os.sendfile` is not available (e.g. Windows) or *file* is not a
1284 regular file :meth:`send` will be used instead. *offset* tells from where to
1285 start reading the file. If specified, *count* is the total number of bytes
1286 to transmit as opposed to sending the file until EOF is reached. File
1287 position is updated on return or also in case of error in which case
1288 :meth:`file.tell() <io.IOBase.tell>` can be used to figure out the number of
1289 bytes which were sent. The socket must be of :const:`SOCK_STREAM` type. Non-
1290 blocking sockets are not supported.
1291
1292 .. versionadded:: 3.5
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001293
Victor Stinnerdaf45552013-08-28 00:53:59 +02001294.. method:: socket.set_inheritable(inheritable)
1295
1296 Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1297 descriptor or socket's handle.
1298
1299 .. versionadded:: 3.4
1300
1301
Georg Brandl116aa622007-08-15 14:28:22 +00001302.. method:: socket.setblocking(flag)
1303
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001304 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1305 socket is set to non-blocking, else to blocking mode.
1306
1307 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1308
1309 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1310
1311 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001312
1313
1314.. method:: socket.settimeout(value)
1315
1316 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001317 nonnegative floating point number expressing seconds, or ``None``.
1318 If a non-zero value is given, subsequent socket operations will raise a
1319 :exc:`timeout` exception if the timeout period *value* has elapsed before
1320 the operation has completed. If zero is given, the socket is put in
1321 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001322
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001323 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001324
1325
1326.. method:: socket.setsockopt(level, optname, value)
1327
1328 .. index:: module: struct
1329
1330 Set the value of the given socket option (see the Unix manual page
1331 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +02001332 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or
1333 a :term:`bytes-like object` representing a buffer. In the latter case it is
1334 up to the caller to
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001335 ensure that the bytestring contains the proper bits (see the optional built-in
1336 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001337
Georg Brandl8c16cb92016-02-25 20:17:45 +01001338 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +02001339 Writable :term:`bytes-like object` is now accepted.
1340
Georg Brandl116aa622007-08-15 14:28:22 +00001341
1342.. method:: socket.shutdown(how)
1343
1344 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1345 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1346 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001347 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001348
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001349
1350.. method:: socket.share(process_id)
1351
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001352 Duplicate a socket and prepare it for sharing with a target process. The
1353 target process must be provided with *process_id*. The resulting bytes object
1354 can then be passed to the target process using some form of interprocess
1355 communication and the socket can be recreated there using :func:`fromshare`.
1356 Once this method has been called, it is safe to close the socket since
1357 the operating system has already duplicated it for the target process.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001358
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001359 Availability: Windows.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001360
1361 .. versionadded:: 3.3
1362
1363
Georg Brandl8569e582010-05-19 20:57:08 +00001364Note that there are no methods :meth:`read` or :meth:`write`; use
1365:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001366
1367Socket objects also have these (read-only) attributes that correspond to the
1368values given to the :class:`socket` constructor.
1369
1370
1371.. attribute:: socket.family
1372
1373 The socket family.
1374
Georg Brandl116aa622007-08-15 14:28:22 +00001375
1376.. attribute:: socket.type
1377
1378 The socket type.
1379
Georg Brandl116aa622007-08-15 14:28:22 +00001380
1381.. attribute:: socket.proto
1382
1383 The socket protocol.
1384
Georg Brandl116aa622007-08-15 14:28:22 +00001385
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001386
1387.. _socket-timeouts:
1388
1389Notes on socket timeouts
1390------------------------
1391
1392A socket object can be in one of three modes: blocking, non-blocking, or
1393timeout. Sockets are by default always created in blocking mode, but this
1394can be changed by calling :func:`setdefaulttimeout`.
1395
1396* In *blocking mode*, operations block until complete or the system returns
1397 an error (such as connection timed out).
1398
1399* In *non-blocking mode*, operations fail (with an error that is unfortunately
1400 system-dependent) if they cannot be completed immediately: functions from the
1401 :mod:`select` can be used to know when and whether a socket is available for
1402 reading or writing.
1403
1404* In *timeout mode*, operations fail if they cannot be completed within the
1405 timeout specified for the socket (they raise a :exc:`timeout` exception)
1406 or if the system returns an error.
1407
1408.. note::
1409 At the operating system level, sockets in *timeout mode* are internally set
1410 in non-blocking mode. Also, the blocking and timeout modes are shared between
1411 file descriptors and socket objects that refer to the same network endpoint.
1412 This implementation detail can have visible consequences if e.g. you decide
1413 to use the :meth:`~socket.fileno()` of a socket.
1414
1415Timeouts and the ``connect`` method
1416^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1417
1418The :meth:`~socket.connect` operation is also subject to the timeout
1419setting, and in general it is recommended to call :meth:`~socket.settimeout`
1420before calling :meth:`~socket.connect` or pass a timeout parameter to
1421:meth:`create_connection`. However, the system network stack may also
1422return a connection timeout error of its own regardless of any Python socket
1423timeout setting.
1424
1425Timeouts and the ``accept`` method
1426^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1427
1428If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1429the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1430behaviour depends on settings of the listening socket:
1431
1432* if the listening socket is in *blocking mode* or in *timeout mode*,
1433 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1434
1435* if the listening socket is in *non-blocking mode*, whether the socket
1436 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1437 is operating system-dependent. If you want to ensure cross-platform
1438 behaviour, it is recommended you manually override this setting.
1439
1440
Georg Brandl116aa622007-08-15 14:28:22 +00001441.. _socket-example:
1442
1443Example
1444-------
1445
1446Here are four minimal example programs using the TCP/IP protocol: a server that
1447echoes all data that it receives back (servicing only one client), and a client
Ezio Melottic048d982013-04-17 04:10:26 +03001448using it. Note that a server must perform the sequence :func:`.socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001449:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1450repeating the :meth:`~socket.accept` to service more than one client), while a
Ezio Melottic048d982013-04-17 04:10:26 +03001451client only needs the sequence :func:`.socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001452note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1453the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001454:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001455
1456The first two examples support IPv4 only. ::
1457
1458 # Echo server program
1459 import socket
1460
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001461 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001462 PORT = 50007 # Arbitrary non-privileged port
Martin Pantere37fc182016-04-24 04:24:36 +00001463 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1464 s.bind((HOST, PORT))
1465 s.listen(1)
1466 conn, addr = s.accept()
1467 with conn:
1468 print('Connected by', addr)
1469 while True:
1470 data = conn.recv(1024)
1471 if not data: break
1472 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001473
1474::
1475
1476 # Echo client program
1477 import socket
1478
1479 HOST = 'daring.cwi.nl' # The remote host
1480 PORT = 50007 # The same port as used by the server
Martin Pantere37fc182016-04-24 04:24:36 +00001481 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1482 s.connect((HOST, PORT))
1483 s.sendall(b'Hello, world')
1484 data = s.recv(1024)
Georg Brandl6911e3c2007-09-04 07:15:32 +00001485 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001486
1487The next two examples are identical to the above two, but support both IPv4 and
1488IPv6. The server side will listen to the first address family available (it
1489should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1490precedence and the server may not accept IPv4 traffic. The client side will try
1491to connect to the all addresses returned as a result of the name resolution, and
1492sends traffic to the first one connected successfully. ::
1493
1494 # Echo server program
1495 import socket
1496 import sys
1497
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001498 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001499 PORT = 50007 # Arbitrary non-privileged port
1500 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001501 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1502 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001503 af, socktype, proto, canonname, sa = res
1504 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001505 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001506 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001507 s = None
1508 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001509 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001510 s.bind(sa)
1511 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001512 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001513 s.close()
1514 s = None
1515 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001516 break
1517 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001518 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001519 sys.exit(1)
1520 conn, addr = s.accept()
Martin Pantere37fc182016-04-24 04:24:36 +00001521 with conn:
1522 print('Connected by', addr)
1523 while True:
1524 data = conn.recv(1024)
1525 if not data: break
1526 conn.send(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001527
1528::
1529
1530 # Echo client program
1531 import socket
1532 import sys
1533
1534 HOST = 'daring.cwi.nl' # The remote host
1535 PORT = 50007 # The same port as used by the server
1536 s = None
1537 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1538 af, socktype, proto, canonname, sa = res
1539 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001540 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001541 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001542 s = None
1543 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001544 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001545 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001546 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001547 s.close()
1548 s = None
1549 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001550 break
1551 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001552 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001553 sys.exit(1)
Martin Pantere37fc182016-04-24 04:24:36 +00001554 with s:
1555 s.sendall(b'Hello, world')
1556 data = s.recv(1024)
Georg Brandl6911e3c2007-09-04 07:15:32 +00001557 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001558
Georg Brandl48310cd2009-01-03 21:18:54 +00001559
Charles-François Natali47413c12011-10-06 19:47:44 +02001560The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001561sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001562the interface::
1563
1564 import socket
1565
1566 # the public network interface
1567 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001568
Christian Heimesfaf2f632008-01-06 16:59:19 +00001569 # create a raw socket and bind it to the public interface
1570 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1571 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001572
Christian Heimesfaf2f632008-01-06 16:59:19 +00001573 # Include IP headers
1574 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001575
Christian Heimesfaf2f632008-01-06 16:59:19 +00001576 # receive all packages
1577 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001578
Christian Heimesfaf2f632008-01-06 16:59:19 +00001579 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001580 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001581
Christian Heimesc3f30c42008-02-22 16:37:40 +00001582 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001583 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001584
Charles-François Natali47413c12011-10-06 19:47:44 +02001585The last example shows how to use the socket interface to communicate to a CAN
Charles-François Natali773e42d2013-02-05 19:42:01 +01001586network using the raw socket protocol. To use CAN with the broadcast
1587manager protocol instead, open a socket with::
1588
1589 socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1590
1591After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
Mark Dickinsond80b16d2013-02-10 18:43:16 +00001592can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
Charles-François Natali773e42d2013-02-05 19:42:01 +01001593their counterparts) on the socket object as usual.
1594
Donald Stufft8b852f12014-05-20 12:58:38 -04001595This example might require special privileges::
Charles-François Natali47413c12011-10-06 19:47:44 +02001596
1597 import socket
1598 import struct
1599
1600
Georg Brandla673eb82012-03-04 16:17:05 +01001601 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02001602
1603 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001604 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001605
1606 def build_can_frame(can_id, data):
1607 can_dlc = len(data)
1608 data = data.ljust(8, b'\x00')
1609 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1610
1611 def dissect_can_frame(frame):
1612 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1613 return (can_id, can_dlc, data[:can_dlc])
1614
1615
Georg Brandla673eb82012-03-04 16:17:05 +01001616 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02001617 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1618 s.bind(('vcan0',))
1619
1620 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001621 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001622
1623 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1624
1625 try:
1626 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001627 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001628 print('Error sending CAN frame')
1629
1630 try:
1631 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001632 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001633 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001634
Sandro Tosi172f3742011-09-02 20:06:31 +02001635Running an example several times with too small delay between executions, could
1636lead to this error::
1637
Antoine Pitrou5574c302011-10-12 17:53:43 +02001638 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001639
1640This is because the previous execution has left the socket in a ``TIME_WAIT``
1641state, and can't be immediately reused.
1642
1643There is a :mod:`socket` flag to set, in order to prevent this,
1644:data:`socket.SO_REUSEADDR`::
1645
1646 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1647 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1648 s.bind((HOST, PORT))
1649
1650the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1651``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1652
1653
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001654.. seealso::
1655
1656 For an introduction to socket programming (in C), see the following papers:
1657
1658 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1659
1660 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1661 al,
1662
1663 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1664 PS1:7 and PS1:8). The platform-specific reference material for the various
1665 socket-related system calls are also a valuable source of information on the
1666 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1667 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1668 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.