blob: c63c73aae1006de4393aebc9ec97e757fbc61702 [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
Steve Dowerea93ac02016-06-17 12:52:18 -0700332.. data:: SIO_RCVALL
333 SIO_KEEPALIVE_VALS
334 SIO_LOOPBACK_FAST_PATH
Christian Heimesfaf2f632008-01-06 16:59:19 +0000335 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000336
Christian Heimesfaf2f632008-01-06 16:59:19 +0000337 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300338 :meth:`~socket.socket.ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000339
Steve Dowerea93ac02016-06-17 12:52:18 -0700340 .. versionchanged:: 3.6
341 ``SIO_LOOPBACK_FAST_PATH`` was added.
342
Georg Brandl116aa622007-08-15 14:28:22 +0000343
Christian Heimes043d6f62008-01-07 17:19:16 +0000344.. data:: TIPC_*
345
346 TIPC related constants, matching the ones exported by the C socket API. See
347 the TIPC documentation for more information.
348
Giampaolo Rodola'80e1c432013-05-21 21:02:04 +0200349.. data:: AF_LINK
350
351 Availability: BSD, OSX.
352
353 .. versionadded:: 3.4
Christian Heimes043d6f62008-01-07 17:19:16 +0000354
Georg Brandl116aa622007-08-15 14:28:22 +0000355.. data:: has_ipv6
356
357 This constant contains a boolean value which indicates if IPv6 is supported on
358 this platform.
359
Martin Panterea7266d2015-09-11 23:14:57 +0000360.. data:: BDADDR_ANY
361 BDADDR_LOCAL
362
363 These are string constants containing Bluetooth addresses with special
364 meanings. For example, :const:`BDADDR_ANY` can be used to indicate
365 any address when specifying the binding socket with
366 :const:`BTPROTO_RFCOMM`.
367
368.. data:: HCI_FILTER
369 HCI_TIME_STAMP
370 HCI_DATA_DIR
371
372 For use with :const:`BTPROTO_HCI`. :const:`HCI_FILTER` is not
373 available for NetBSD or DragonFlyBSD. :const:`HCI_TIME_STAMP` and
374 :const:`HCI_DATA_DIR` are not available for FreeBSD, NetBSD, or
375 DragonFlyBSD.
Georg Brandl116aa622007-08-15 14:28:22 +0000376
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100377Functions
378^^^^^^^^^
379
380Creating sockets
381''''''''''''''''
382
383The following functions all create :ref:`socket objects <socket-objects>`.
384
385
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100386.. function:: socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100387
388 Create a new socket using the given address family, socket type and protocol
389 number. The address family should be :const:`AF_INET` (the default),
390 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
391 socket type should be :const:`SOCK_STREAM` (the default),
392 :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100393 constants. The protocol number is usually zero and may be omitted or in the
394 case where the address family is :const:`AF_CAN` the protocol should be one
Berker Peksag24a61092015-10-08 06:34:01 +0300395 of :const:`CAN_RAW` or :const:`CAN_BCM`. If *fileno* is specified, the other
396 arguments are ignored, causing the socket with the specified file descriptor
397 to return. Unlike :func:`socket.fromfd`, *fileno* will return the same
398 socket and not a duplicate. This may help close a detached socket using
399 :meth:`socket.close()`.
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100400
401 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100402
403 .. versionchanged:: 3.3
404 The AF_CAN family was added.
405 The AF_RDS family was added.
406
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100407 .. versionchanged:: 3.4
408 The CAN_BCM protocol was added.
409
410 .. versionchanged:: 3.4
411 The returned socket is now non-inheritable.
412
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100413
414.. function:: socketpair([family[, type[, proto]]])
415
416 Build a pair of connected socket objects using the given address family, socket
417 type, and protocol number. Address family, socket type, and protocol number are
418 as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
419 if defined on the platform; otherwise, the default is :const:`AF_INET`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100420
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100421 The newly created sockets are :ref:`non-inheritable <fd_inheritance>`.
422
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100423 .. versionchanged:: 3.2
424 The returned socket objects now support the whole socket API, rather
425 than a subset.
426
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100427 .. versionchanged:: 3.4
428 The returned sockets are now non-inheritable.
429
Charles-François Natali98c745a2014-10-14 21:22:44 +0100430 .. versionchanged:: 3.5
431 Windows support added.
432
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100433
Gregory P. Smithb4066372010-01-03 03:28:29 +0000434.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000435
Antoine Pitrou889a5102012-01-12 08:06:19 +0100436 Connect to a TCP service listening on the Internet *address* (a 2-tuple
437 ``(host, port)``), and return the socket object. This is a higher-level
438 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
439 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
440 and then try to connect to all possible addresses in turn until a
441 connection succeeds. This makes it easy to write clients that are
442 compatible to both IPv4 and IPv6.
443
444 Passing the optional *timeout* parameter will set the timeout on the
445 socket instance before attempting to connect. If no *timeout* is
446 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000447 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000448
Gregory P. Smithb4066372010-01-03 03:28:29 +0000449 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
450 socket to bind to as its source address before connecting. If host or port
451 are '' or 0 respectively the OS default behavior will be used.
452
453 .. versionchanged:: 3.2
454 *source_address* was added.
455
Georg Brandl116aa622007-08-15 14:28:22 +0000456
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100457.. function:: fromfd(fd, family, type, proto=0)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100458
459 Duplicate the file descriptor *fd* (an integer as returned by a file object's
460 :meth:`fileno` method) and build a socket object from the result. Address
461 family, socket type and protocol number are as for the :func:`.socket` function
462 above. The file descriptor should refer to a socket, but this is not checked ---
463 subsequent operations on the object may fail if the file descriptor is invalid.
464 This function is rarely needed, but can be used to get or set socket options on
465 a socket passed to a program as standard input or output (such as a server
466 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
467
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100468 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
469
470 .. versionchanged:: 3.4
471 The returned socket is now non-inheritable.
472
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100473
474.. function:: fromshare(data)
475
476 Instantiate a socket from data obtained from the :meth:`socket.share`
477 method. The socket is assumed to be in blocking mode.
478
479 Availability: Windows.
480
481 .. versionadded:: 3.3
482
483
484.. data:: SocketType
485
486 This is a Python type object that represents the socket object type. It is the
487 same as ``type(socket(...))``.
488
489
490Other functions
491'''''''''''''''
492
493The :mod:`socket` module also offers various network-related services:
494
495
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000496.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000497
Antoine Pitrou91035972010-05-31 17:04:40 +0000498 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
499 all the necessary arguments for creating a socket connected to that service.
500 *host* is a domain name, a string representation of an IPv4/v6 address
501 or ``None``. *port* is a string service name such as ``'http'``, a numeric
502 port number or ``None``. By passing ``None`` as the value of *host*
503 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000504
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000505 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000506 in order to narrow the list of addresses returned. Passing zero as a
507 value for each of these arguments selects the full range of results.
508 The *flags* argument can be one or several of the ``AI_*`` constants,
509 and will influence how results are computed and returned.
510 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
511 and will raise an error if *host* is a domain name.
512
513 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000514
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000515 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000516
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000517 In these tuples, *family*, *type*, *proto* are all integers and are
Ezio Melottic048d982013-04-17 04:10:26 +0300518 meant to be passed to the :func:`.socket` function. *canonname* will be
Antoine Pitrou91035972010-05-31 17:04:40 +0000519 a string representing the canonical name of the *host* if
520 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
521 will be empty. *sockaddr* is a tuple describing a socket address, whose
522 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
523 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
524 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
525 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000526
Antoine Pitrou91035972010-05-31 17:04:40 +0000527 The following example fetches address information for a hypothetical TCP
Ned Deily11cf4f62015-06-01 21:19:30 -0700528 connection to ``example.org`` on port 80 (results may differ on your
Antoine Pitrou91035972010-05-31 17:04:40 +0000529 system if IPv6 isn't enabled)::
530
Ned Deily11cf4f62015-06-01 21:19:30 -0700531 >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
Ned Deily1b79e2d2015-06-01 18:52:48 -0700532 [(<AddressFamily.AF_INET6: 10>, <SocketType.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700533 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
Ned Deily1b79e2d2015-06-01 18:52:48 -0700534 (<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700535 6, '', ('93.184.216.34', 80))]
Georg Brandl116aa622007-08-15 14:28:22 +0000536
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000537 .. versionchanged:: 3.2
Andrew Kuchling46ff4ee2014-02-15 16:39:37 -0500538 parameters can now be passed using keyword arguments.
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000539
Georg Brandl116aa622007-08-15 14:28:22 +0000540.. function:: getfqdn([name])
541
542 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
543 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000544 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000545 host, if available. The first name which includes a period is selected. In
546 case no fully qualified domain name is available, the hostname as returned by
547 :func:`gethostname` is returned.
548
Georg Brandl116aa622007-08-15 14:28:22 +0000549
550.. function:: gethostbyname(hostname)
551
552 Translate a host name to IPv4 address format. The IPv4 address is returned as a
553 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
554 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
555 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
556 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
557
558
559.. function:: gethostbyname_ex(hostname)
560
561 Translate a host name to IPv4 address format, extended interface. Return a
562 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
563 host name responding to the given *ip_address*, *aliaslist* is a (possibly
564 empty) list of alternative host names for the same address, and *ipaddrlist* is
565 a list of IPv4 addresses for the same interface on the same host (often but not
566 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
567 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
568 stack support.
569
570
571.. function:: gethostname()
572
573 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000574 interpreter is currently executing.
575
Benjamin Peterson65676e42008-11-05 21:42:45 +0000576 Note: :func:`gethostname` doesn't always return the fully qualified domain
Berker Peksag2a8baed2015-05-19 01:31:00 +0300577 name; use :func:`getfqdn` for that.
Georg Brandl116aa622007-08-15 14:28:22 +0000578
579
580.. function:: gethostbyaddr(ip_address)
581
582 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
583 primary host name responding to the given *ip_address*, *aliaslist* is a
584 (possibly empty) list of alternative host names for the same address, and
585 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
586 host (most likely containing only a single address). To find the fully qualified
587 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
588 both IPv4 and IPv6.
589
590
591.. function:: getnameinfo(sockaddr, flags)
592
593 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
594 on the settings of *flags*, the result can contain a fully-qualified domain name
595 or numeric address representation in *host*. Similarly, *port* can contain a
596 string port name or a numeric port number.
597
Georg Brandl116aa622007-08-15 14:28:22 +0000598
599.. function:: getprotobyname(protocolname)
600
601 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
Ezio Melottic048d982013-04-17 04:10:26 +0300602 suitable for passing as the (optional) third argument to the :func:`.socket`
Georg Brandl116aa622007-08-15 14:28:22 +0000603 function. This is usually only needed for sockets opened in "raw" mode
604 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
605 automatically if the protocol is omitted or zero.
606
607
608.. function:: getservbyname(servicename[, protocolname])
609
610 Translate an Internet service name and protocol name to a port number for that
611 service. The optional protocol name, if given, should be ``'tcp'`` or
612 ``'udp'``, otherwise any protocol will match.
613
614
615.. function:: getservbyport(port[, protocolname])
616
617 Translate an Internet port number and protocol name to a service name for that
618 service. The optional protocol name, if given, should be ``'tcp'`` or
619 ``'udp'``, otherwise any protocol will match.
620
621
Georg Brandl116aa622007-08-15 14:28:22 +0000622.. function:: ntohl(x)
623
624 Convert 32-bit positive integers from network to host byte order. On machines
625 where the host byte order is the same as network byte order, this is a no-op;
626 otherwise, it performs a 4-byte swap operation.
627
628
629.. function:: ntohs(x)
630
631 Convert 16-bit positive integers from network to host byte order. On machines
632 where the host byte order is the same as network byte order, this is a no-op;
633 otherwise, it performs a 2-byte swap operation.
634
635
636.. function:: htonl(x)
637
638 Convert 32-bit positive integers from host to network byte order. On machines
639 where the host byte order is the same as network byte order, this is a no-op;
640 otherwise, it performs a 4-byte swap operation.
641
642
643.. function:: htons(x)
644
645 Convert 16-bit positive integers from host to network byte order. On machines
646 where the host byte order is the same as network byte order, this is a no-op;
647 otherwise, it performs a 2-byte swap operation.
648
649
650.. function:: inet_aton(ip_string)
651
652 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000653 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000654 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000655 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000656 for the 32-bit packed binary this function returns.
657
Georg Brandlf5123ef2009-06-04 10:28:36 +0000658 :func:`inet_aton` also accepts strings with less than three dots; see the
659 Unix manual page :manpage:`inet(3)` for details.
660
Georg Brandl116aa622007-08-15 14:28:22 +0000661 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200662 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000663 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000664
Georg Brandl5f259722009-05-04 20:50:30 +0000665 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000666 instead for IPv4/v6 dual stack support.
667
668
669.. function:: inet_ntoa(packed_ip)
670
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200671 Convert a 32-bit packed IPv4 address (a :term:`bytes-like object` four
672 bytes in length) to its standard dotted-quad string representation (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000673 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000674 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000675 is the C type for the 32-bit packed binary data this function takes as an
676 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000677
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000678 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200679 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000680 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000681 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000682
Georg Brandl8c16cb92016-02-25 20:17:45 +0100683 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200684 Writable :term:`bytes-like object` is now accepted.
685
Georg Brandl116aa622007-08-15 14:28:22 +0000686
687.. function:: inet_pton(address_family, ip_string)
688
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000689 Convert an IP address from its family-specific string format to a packed,
690 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000691 calls for an object of type :c:type:`struct in_addr` (similar to
692 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000693
694 Supported values for *address_family* are currently :const:`AF_INET` and
695 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200696 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000697 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000698 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000699
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900700 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000701
R David Murray6c501012014-03-07 21:22:39 -0500702 .. versionchanged:: 3.4
703 Windows support added
704
Georg Brandl116aa622007-08-15 14:28:22 +0000705
706.. function:: inet_ntop(address_family, packed_ip)
707
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200708 Convert a packed IP address (a :term:`bytes-like object` of some number of
709 bytes) to its standard, family-specific string representation (for
710 example, ``'7.10.0.5'`` or ``'5aef:2b::8'``).
711 :func:`inet_ntop` is useful when a library or network protocol returns an
712 object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`) or
713 :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000714
715 Supported values for *address_family* are currently :const:`AF_INET` and
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200716 :const:`AF_INET6`. If the bytes object *packed_ip* is not the correct
717 length for the specified address family, :exc:`ValueError` will be raised.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200718 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000719
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900720 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000721
R David Murray6c501012014-03-07 21:22:39 -0500722 .. versionchanged:: 3.4
723 Windows support added
724
Georg Brandl8c16cb92016-02-25 20:17:45 +0100725 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +0200726 Writable :term:`bytes-like object` is now accepted.
727
Georg Brandl116aa622007-08-15 14:28:22 +0000728
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000729..
730 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
731 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
732 interface, in which struct msghdr has no msg_control or
733 msg_controllen members, is not currently supported.
734
735.. function:: CMSG_LEN(length)
736
737 Return the total length, without trailing padding, of an ancillary
738 data item with associated data of the given *length*. This value
739 can often be used as the buffer size for :meth:`~socket.recvmsg` to
740 receive a single item of ancillary data, but :rfc:`3542` requires
741 portable applications to use :func:`CMSG_SPACE` and thus include
742 space for padding, even when the item will be the last in the
743 buffer. Raises :exc:`OverflowError` if *length* is outside the
744 permissible range of values.
745
746 Availability: most Unix platforms, possibly others.
747
748 .. versionadded:: 3.3
749
750
751.. function:: CMSG_SPACE(length)
752
753 Return the buffer size needed for :meth:`~socket.recvmsg` to
754 receive an ancillary data item with associated data of the given
755 *length*, along with any trailing padding. The buffer space needed
756 to receive multiple items is the sum of the :func:`CMSG_SPACE`
757 values for their associated data lengths. Raises
758 :exc:`OverflowError` if *length* is outside the permissible range
759 of values.
760
761 Note that some systems might support ancillary data without
762 providing this function. Also note that setting the buffer size
763 using the results of this function may not precisely limit the
764 amount of ancillary data that can be received, since additional
765 data may be able to fit into the padding area.
766
767 Availability: most Unix platforms, possibly others.
768
769 .. versionadded:: 3.3
770
771
Georg Brandl116aa622007-08-15 14:28:22 +0000772.. function:: getdefaulttimeout()
773
Ezio Melotti388c9452011-08-14 08:28:57 +0300774 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000775 of ``None`` indicates that new socket objects have no timeout. When the socket
776 module is first imported, the default is ``None``.
777
Georg Brandl116aa622007-08-15 14:28:22 +0000778
779.. function:: setdefaulttimeout(timeout)
780
Ezio Melotti388c9452011-08-14 08:28:57 +0300781 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000782 the socket module is first imported, the default is ``None``. See
783 :meth:`~socket.settimeout` for possible values and their respective
784 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000785
Georg Brandl116aa622007-08-15 14:28:22 +0000786
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000787.. function:: sethostname(name)
788
Serhiy Storchakad65c9492015-11-02 14:10:23 +0200789 Set the machine's hostname to *name*. This will raise an
Antoine Pitrou5574c302011-10-12 17:53:43 +0200790 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000791
792 Availability: Unix.
793
794 .. versionadded:: 3.3
795
796
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700797.. function:: if_nameindex()
798
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700799 Return a list of network interface information
800 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200801 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700802
803 Availability: Unix.
804
805 .. versionadded:: 3.3
806
807
808.. function:: if_nametoindex(if_name)
809
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700810 Return a network interface index number corresponding to an
811 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200812 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700813
814 Availability: Unix.
815
816 .. versionadded:: 3.3
817
818
819.. function:: if_indextoname(if_index)
820
Serhiy Storchakad65c9492015-11-02 14:10:23 +0200821 Return a network interface name corresponding to an
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700822 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200823 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700824
825 Availability: Unix.
826
827 .. versionadded:: 3.3
828
829
Georg Brandl116aa622007-08-15 14:28:22 +0000830.. _socket-objects:
831
832Socket Objects
833--------------
834
Antoine Pitroue3658a72013-12-04 21:02:42 +0100835Socket objects have the following methods. Except for
836:meth:`~socket.makefile`, these correspond to Unix system calls applicable
837to sockets.
Georg Brandl116aa622007-08-15 14:28:22 +0000838
Martin Pantere37fc182016-04-24 04:24:36 +0000839.. versionchanged:: 3.2
840 Support for the :term:`context manager` protocol was added. Exiting the
841 context manager is equivalent to calling :meth:`~socket.close`.
842
Georg Brandl116aa622007-08-15 14:28:22 +0000843
844.. method:: socket.accept()
845
846 Accept a connection. The socket must be bound to an address and listening for
847 connections. The return value is a pair ``(conn, address)`` where *conn* is a
848 *new* socket object usable to send and receive data on the connection, and
849 *address* is the address bound to the socket on the other end of the connection.
850
Victor Stinnerdaf45552013-08-28 00:53:59 +0200851 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
852
853 .. versionchanged:: 3.4
854 The socket is now non-inheritable.
855
Victor Stinner708d9ba2015-04-02 11:49:42 +0200856 .. versionchanged:: 3.5
857 If the system call is interrupted and the signal handler does not raise
858 an exception, the method now retries the system call instead of raising
859 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
860
Georg Brandl116aa622007-08-15 14:28:22 +0000861
862.. method:: socket.bind(address)
863
864 Bind the socket to *address*. The socket must not already be bound. (The format
865 of *address* depends on the address family --- see above.)
866
Georg Brandl116aa622007-08-15 14:28:22 +0000867
868.. method:: socket.close()
869
Antoine Pitroue3658a72013-12-04 21:02:42 +0100870 Mark the socket closed. The underlying system resource (e.g. a file
871 descriptor) is also closed when all file objects from :meth:`makefile()`
872 are closed. Once that happens, all future operations on the socket
873 object will fail. The remote end will receive no more data (after
874 queued data is flushed).
875
876 Sockets are automatically closed when they are garbage-collected, but
877 it is recommended to :meth:`close` them explicitly, or to use a
878 :keyword:`with` statement around them.
Georg Brandl116aa622007-08-15 14:28:22 +0000879
Martin Panter50ab1a32016-04-11 00:38:12 +0000880 .. versionchanged:: 3.6
881 :exc:`OSError` is now raised if an error occurs when the underlying
882 :c:func:`close` call is made.
883
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000884 .. note::
Éric Araujofa5e6e42014-03-12 19:51:00 -0400885
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000886 :meth:`close()` releases the resource associated with a connection but
887 does not necessarily close the connection immediately. If you want
888 to close the connection in a timely fashion, call :meth:`shutdown()`
889 before :meth:`close()`.
890
Georg Brandl116aa622007-08-15 14:28:22 +0000891
892.. method:: socket.connect(address)
893
894 Connect to a remote socket at *address*. (The format of *address* depends on the
895 address family --- see above.)
896
Victor Stinner81c41db2015-04-02 11:50:57 +0200897 If the connection is interrupted by a signal, the method waits until the
898 connection completes, or raise a :exc:`socket.timeout` on timeout, if the
899 signal handler doesn't raise an exception and the socket is blocking or has
900 a timeout. For non-blocking sockets, the method raises an
901 :exc:`InterruptedError` exception if the connection is interrupted by a
902 signal (or the exception raised by the signal handler).
903
904 .. versionchanged:: 3.5
905 The method now waits until the connection completes instead of raising an
906 :exc:`InterruptedError` exception if the connection is interrupted by a
907 signal, the signal handler doesn't raise an exception and the socket is
908 blocking or has a timeout (see the :pep:`475` for the rationale).
909
Georg Brandl116aa622007-08-15 14:28:22 +0000910
911.. method:: socket.connect_ex(address)
912
913 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +0000914 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +0000915 problems, such as "host not found," can still raise exceptions). The error
916 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +0000917 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +0000918 connects.
919
Georg Brandl116aa622007-08-15 14:28:22 +0000920
Antoine Pitrou6e451df2010-08-09 20:39:54 +0000921.. method:: socket.detach()
922
923 Put the socket object into closed state without actually closing the
924 underlying file descriptor. The file descriptor is returned, and can
925 be reused for other purposes.
926
927 .. versionadded:: 3.2
928
929
Victor Stinnerdaf45552013-08-28 00:53:59 +0200930.. method:: socket.dup()
931
932 Duplicate the socket.
933
934 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
935
936 .. versionchanged:: 3.4
937 The socket is now non-inheritable.
938
939
Georg Brandl116aa622007-08-15 14:28:22 +0000940.. method:: socket.fileno()
941
Kushal Das89beb272016-06-04 10:20:12 -0700942 Return the socket's file descriptor (a small integer), or -1 on failure. This
943 is useful with :func:`select.select`.
Georg Brandl116aa622007-08-15 14:28:22 +0000944
945 Under Windows the small integer returned by this method cannot be used where a
946 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
947 this limitation.
948
Victor Stinnerdaf45552013-08-28 00:53:59 +0200949.. method:: socket.get_inheritable()
950
951 Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file
952 descriptor or socket's handle: ``True`` if the socket can be inherited in
953 child processes, ``False`` if it cannot.
954
955 .. versionadded:: 3.4
956
957
Georg Brandl116aa622007-08-15 14:28:22 +0000958.. method:: socket.getpeername()
959
960 Return the remote address to which the socket is connected. This is useful to
961 find out the port number of a remote IPv4/v6 socket, for instance. (The format
962 of the address returned depends on the address family --- see above.) On some
963 systems this function is not supported.
964
965
966.. method:: socket.getsockname()
967
968 Return the socket's own address. This is useful to find out the port number of
969 an IPv4/v6 socket, for instance. (The format of the address returned depends on
970 the address family --- see above.)
971
972
973.. method:: socket.getsockopt(level, optname[, buflen])
974
975 Return the value of the given socket option (see the Unix man page
976 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
977 are defined in this module. If *buflen* is absent, an integer option is assumed
978 and its integer value is returned by the function. If *buflen* is present, it
979 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000980 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +0000981 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000982 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +0000983
Georg Brandl48310cd2009-01-03 21:18:54 +0000984
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000985.. method:: socket.gettimeout()
986
Ezio Melotti388c9452011-08-14 08:28:57 +0300987 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000988 or ``None`` if no timeout is set. This reflects the last call to
989 :meth:`setblocking` or :meth:`settimeout`.
990
991
Christian Heimesfaf2f632008-01-06 16:59:19 +0000992.. method:: socket.ioctl(control, option)
993
Georg Brandl48310cd2009-01-03 21:18:54 +0000994 :platform: Windows
995
Christian Heimes679db4a2008-01-18 09:56:22 +0000996 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +0000997 interface. Please refer to the `Win32 documentation
Georg Brandl5d941342016-02-26 19:37:12 +0100998 <https://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
Georg Brandl8569e582010-05-19 20:57:08 +0000999 information.
Georg Brandl48310cd2009-01-03 21:18:54 +00001000
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +00001001 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
1002 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +00001003
Steve Dowerea93ac02016-06-17 12:52:18 -07001004 Currently only the following control codes are supported:
1005 ``SIO_RCVALL``, ``SIO_KEEPALIVE_VALS``, and ``SIO_LOOPBACK_FAST_PATH``.
1006
1007 .. versionchanged:: 3.6
1008 ``SIO_LOOPBACK_FAST_PATH`` was added.
1009
Charles-François Natali644b8f52014-05-22 19:45:39 +01001010.. method:: socket.listen([backlog])
Georg Brandl116aa622007-08-15 14:28:22 +00001011
Charles-François Natali644b8f52014-05-22 19:45:39 +01001012 Enable a server to accept connections. If *backlog* is specified, it must
1013 be at least 0 (if it is lower, it is set to 0); it specifies the number of
1014 unaccepted connections that the system will allow before refusing new
1015 connections. If not specified, a default reasonable value is chosen.
Georg Brandl116aa622007-08-15 14:28:22 +00001016
Charles-François Natali644b8f52014-05-22 19:45:39 +01001017 .. versionchanged:: 3.5
1018 The *backlog* parameter is now optional.
Georg Brandl116aa622007-08-15 14:28:22 +00001019
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001020.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
1021 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +00001022
1023 .. index:: single: I/O control; buffering
1024
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001025 Return a :term:`file object` associated with the socket. The exact returned
1026 type depends on the arguments given to :meth:`makefile`. These arguments are
Berker Peksag3fe64d02016-02-18 17:34:00 +02001027 interpreted the same way as by the built-in :func:`open` function, except
1028 the only supported *mode* values are ``'r'`` (default), ``'w'`` and ``'b'``.
Georg Brandl116aa622007-08-15 14:28:22 +00001029
Antoine Pitroue3658a72013-12-04 21:02:42 +01001030 The socket must be in blocking mode; it can have a timeout, but the file
Martin Panter7462b6492015-11-02 03:37:02 +00001031 object's internal buffer may end up in an inconsistent state if a timeout
Antoine Pitroue3658a72013-12-04 21:02:42 +01001032 occurs.
1033
1034 Closing the file object returned by :meth:`makefile` won't close the
1035 original socket unless all other file objects have been closed and
1036 :meth:`socket.close` has been called on the socket object.
Georg Brandle9e8c9b2010-12-28 11:49:41 +00001037
1038 .. note::
1039
1040 On Windows, the file-like object created by :meth:`makefile` cannot be
1041 used where a file object with a file descriptor is expected, such as the
1042 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +00001043
Georg Brandl116aa622007-08-15 14:28:22 +00001044
1045.. method:: socket.recv(bufsize[, flags])
1046
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001047 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +00001048 data received. The maximum amount of data to be received at once is specified
1049 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
1050 the optional argument *flags*; it defaults to zero.
1051
1052 .. note::
1053
1054 For best match with hardware and network realities, the value of *bufsize*
1055 should be a relatively small power of 2, for example, 4096.
1056
Victor Stinner708d9ba2015-04-02 11:49:42 +02001057 .. versionchanged:: 3.5
1058 If the system call is interrupted and the signal handler does not raise
1059 an exception, the method now retries the system call instead of raising
1060 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1061
Georg Brandl116aa622007-08-15 14:28:22 +00001062
1063.. method:: socket.recvfrom(bufsize[, flags])
1064
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001065 Receive data from the socket. The return value is a pair ``(bytes, address)``
1066 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +00001067 address of the socket sending the data. See the Unix manual page
1068 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
1069 to zero. (The format of *address* depends on the address family --- see above.)
1070
Victor Stinner708d9ba2015-04-02 11:49:42 +02001071 .. versionchanged:: 3.5
1072 If the system call is interrupted and the signal handler does not raise
1073 an exception, the method now retries the system call instead of raising
1074 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1075
Georg Brandl116aa622007-08-15 14:28:22 +00001076
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001077.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
1078
1079 Receive normal data (up to *bufsize* bytes) and ancillary data from
1080 the socket. The *ancbufsize* argument sets the size in bytes of
1081 the internal buffer used to receive the ancillary data; it defaults
1082 to 0, meaning that no ancillary data will be received. Appropriate
1083 buffer sizes for ancillary data can be calculated using
1084 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
1085 into the buffer might be truncated or discarded. The *flags*
1086 argument defaults to 0 and has the same meaning as for
1087 :meth:`recv`.
1088
1089 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
1090 address)``. The *data* item is a :class:`bytes` object holding the
1091 non-ancillary data received. The *ancdata* item is a list of zero
1092 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
1093 the ancillary data (control messages) received: *cmsg_level* and
1094 *cmsg_type* are integers specifying the protocol level and
1095 protocol-specific type respectively, and *cmsg_data* is a
1096 :class:`bytes` object holding the associated data. The *msg_flags*
1097 item is the bitwise OR of various flags indicating conditions on
1098 the received message; see your system documentation for details.
1099 If the receiving socket is unconnected, *address* is the address of
1100 the sending socket, if available; otherwise, its value is
1101 unspecified.
1102
1103 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
1104 pass file descriptors between processes over an :const:`AF_UNIX`
1105 socket. When this facility is used (it is often restricted to
1106 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
1107 ancillary data, items of the form ``(socket.SOL_SOCKET,
1108 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
1109 representing the new file descriptors as a binary array of the
1110 native C :c:type:`int` type. If :meth:`recvmsg` raises an
1111 exception after the system call returns, it will first attempt to
1112 close any file descriptors received via this mechanism.
1113
1114 Some systems do not indicate the truncated length of ancillary data
1115 items which have been only partially received. If an item appears
1116 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
1117 a :exc:`RuntimeWarning`, and will return the part of it which is
1118 inside the buffer provided it has not been truncated before the
1119 start of its associated data.
1120
1121 On systems which support the :const:`SCM_RIGHTS` mechanism, the
1122 following function will receive up to *maxfds* file descriptors,
1123 returning the message data and a list containing the descriptors
1124 (while ignoring unexpected conditions such as unrelated control
1125 messages being received). See also :meth:`sendmsg`. ::
1126
1127 import socket, array
1128
1129 def recv_fds(sock, msglen, maxfds):
1130 fds = array.array("i") # Array of ints
1131 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1132 for cmsg_level, cmsg_type, cmsg_data in ancdata:
1133 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
1134 # Append data, ignoring any truncated integers at the end.
1135 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
1136 return msg, list(fds)
1137
1138 Availability: most Unix platforms, possibly others.
1139
1140 .. versionadded:: 3.3
1141
Victor Stinner708d9ba2015-04-02 11:49:42 +02001142 .. versionchanged:: 3.5
1143 If the system call is interrupted and the signal handler does not raise
1144 an exception, the method now retries the system call instead of raising
1145 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1146
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001147
1148.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1149
1150 Receive normal data and ancillary data from the socket, behaving as
1151 :meth:`recvmsg` would, but scatter the non-ancillary data into a
1152 series of buffers instead of returning a new bytes object. The
1153 *buffers* argument must be an iterable of objects that export
1154 writable buffers (e.g. :class:`bytearray` objects); these will be
1155 filled with successive chunks of the non-ancillary data until it
1156 has all been written or there are no more buffers. The operating
1157 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1158 on the number of buffers that can be used. The *ancbufsize* and
1159 *flags* arguments have the same meaning as for :meth:`recvmsg`.
1160
1161 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1162 address)``, where *nbytes* is the total number of bytes of
1163 non-ancillary data written into the buffers, and *ancdata*,
1164 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1165
1166 Example::
1167
1168 >>> import socket
1169 >>> s1, s2 = socket.socketpair()
1170 >>> b1 = bytearray(b'----')
1171 >>> b2 = bytearray(b'0123456789')
1172 >>> b3 = bytearray(b'--------------')
1173 >>> s1.send(b'Mary had a little lamb')
1174 22
1175 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1176 (22, [], 0, None)
1177 >>> [b1, b2, b3]
1178 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1179
1180 Availability: most Unix platforms, possibly others.
1181
1182 .. versionadded:: 3.3
1183
1184
Georg Brandl116aa622007-08-15 14:28:22 +00001185.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1186
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001187 Receive data from the socket, writing it into *buffer* instead of creating a
1188 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +00001189 the number of bytes received and *address* is the address of the socket sending
1190 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
1191 optional argument *flags*; it defaults to zero. (The format of *address*
1192 depends on the address family --- see above.)
1193
Georg Brandl116aa622007-08-15 14:28:22 +00001194
1195.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1196
1197 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001198 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +00001199 receive up to the size available in the given buffer. Returns the number of
1200 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
1201 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001202
Georg Brandl116aa622007-08-15 14:28:22 +00001203
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001204.. method:: socket.send(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.
1208 Returns the number of bytes sent. Applications are responsible for checking that
1209 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001210 application needs to attempt delivery of the remaining data. For further
1211 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +00001212
Victor Stinner708d9ba2015-04-02 11:49:42 +02001213 .. versionchanged:: 3.5
1214 If the system call is interrupted and the signal handler does not raise
1215 an exception, the method now retries the system call instead of raising
1216 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1217
Georg Brandl116aa622007-08-15 14:28:22 +00001218
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001219.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001220
1221 Send data to the socket. The socket must be connected to a remote socket. The
1222 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001223 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001224 either all data has been sent or an error occurs. ``None`` is returned on
1225 success. On error, an exception is raised, and there is no way to determine how
1226 much data, if any, was successfully sent.
1227
Victor Stinner708d9ba2015-04-02 11:49:42 +02001228 .. versionchanged:: 3.5
Victor Stinner8912d142015-04-06 23:16:34 +02001229 The socket timeout is no more reset each time data is sent successfuly.
1230 The socket timeout is now the maximum total duration to send all data.
1231
1232 .. versionchanged:: 3.5
Victor Stinner708d9ba2015-04-02 11:49:42 +02001233 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
Ezio Melottie0add762012-09-14 06:32:35 +03001238.. method:: socket.sendto(bytes, address)
1239 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001240
1241 Send data to the socket. The socket should not be connected to a remote socket,
1242 since the destination socket is specified by *address*. The optional *flags*
1243 argument has the same meaning as for :meth:`recv` above. Return the number of
1244 bytes sent. (The format of *address* depends on the address family --- see
1245 above.)
1246
Victor Stinner708d9ba2015-04-02 11:49:42 +02001247 .. versionchanged:: 3.5
1248 If the system call is interrupted and the signal handler does not raise
1249 an exception, the method now retries the system call instead of raising
1250 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1251
Georg Brandl116aa622007-08-15 14:28:22 +00001252
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001253.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1254
1255 Send normal and ancillary data to the socket, gathering the
1256 non-ancillary data from a series of buffers and concatenating it
1257 into a single message. The *buffers* argument specifies the
Serhiy Storchakab757c832014-12-05 22:25:22 +02001258 non-ancillary data as an iterable of
1259 :term:`bytes-like objects <bytes-like object>`
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001260 (e.g. :class:`bytes` objects); the operating system may set a limit
1261 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1262 that can be used. The *ancdata* argument specifies the ancillary
1263 data (control messages) as an iterable of zero or more tuples
1264 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1265 *cmsg_type* are integers specifying the protocol level and
1266 protocol-specific type respectively, and *cmsg_data* is a
Serhiy Storchakab757c832014-12-05 22:25:22 +02001267 bytes-like object holding the associated data. Note that
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001268 some systems (in particular, systems without :func:`CMSG_SPACE`)
1269 might support sending only one control message per call. The
1270 *flags* argument defaults to 0 and has the same meaning as for
1271 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1272 destination address for the message. The return value is the
1273 number of bytes of non-ancillary data sent.
1274
1275 The following function sends the list of file descriptors *fds*
1276 over an :const:`AF_UNIX` socket, on systems which support the
1277 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1278
1279 import socket, array
1280
1281 def send_fds(sock, msg, fds):
1282 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1283
1284 Availability: most Unix platforms, possibly others.
1285
1286 .. versionadded:: 3.3
1287
Victor Stinner708d9ba2015-04-02 11:49:42 +02001288 .. versionchanged:: 3.5
1289 If the system call is interrupted and the signal handler does not raise
1290 an exception, the method now retries the system call instead of raising
1291 an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1292
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001293.. method:: socket.sendfile(file, offset=0, count=None)
1294
1295 Send a file until EOF is reached by using high-performance
1296 :mod:`os.sendfile` and return the total number of bytes which were sent.
1297 *file* must be a regular file object opened in binary mode. If
1298 :mod:`os.sendfile` is not available (e.g. Windows) or *file* is not a
1299 regular file :meth:`send` will be used instead. *offset* tells from where to
1300 start reading the file. If specified, *count* is the total number of bytes
1301 to transmit as opposed to sending the file until EOF is reached. File
1302 position is updated on return or also in case of error in which case
1303 :meth:`file.tell() <io.IOBase.tell>` can be used to figure out the number of
1304 bytes which were sent. The socket must be of :const:`SOCK_STREAM` type. Non-
1305 blocking sockets are not supported.
1306
1307 .. versionadded:: 3.5
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001308
Victor Stinnerdaf45552013-08-28 00:53:59 +02001309.. method:: socket.set_inheritable(inheritable)
1310
1311 Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1312 descriptor or socket's handle.
1313
1314 .. versionadded:: 3.4
1315
1316
Georg Brandl116aa622007-08-15 14:28:22 +00001317.. method:: socket.setblocking(flag)
1318
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001319 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1320 socket is set to non-blocking, else to blocking mode.
1321
1322 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1323
1324 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1325
1326 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001327
1328
1329.. method:: socket.settimeout(value)
1330
1331 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001332 nonnegative floating point number expressing seconds, or ``None``.
1333 If a non-zero value is given, subsequent socket operations will raise a
1334 :exc:`timeout` exception if the timeout period *value* has elapsed before
1335 the operation has completed. If zero is given, the socket is put in
1336 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001337
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001338 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001339
1340
1341.. method:: socket.setsockopt(level, optname, value)
1342
1343 .. index:: module: struct
1344
1345 Set the value of the given socket option (see the Unix manual page
1346 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +02001347 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or
1348 a :term:`bytes-like object` representing a buffer. In the latter case it is
1349 up to the caller to
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001350 ensure that the bytestring contains the proper bits (see the optional built-in
1351 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001352
Georg Brandl8c16cb92016-02-25 20:17:45 +01001353 .. versionchanged:: 3.5
Serhiy Storchaka8490f5a2015-03-20 09:00:36 +02001354 Writable :term:`bytes-like object` is now accepted.
1355
Georg Brandl116aa622007-08-15 14:28:22 +00001356
1357.. method:: socket.shutdown(how)
1358
1359 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1360 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1361 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001362 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001363
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001364
1365.. method:: socket.share(process_id)
1366
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001367 Duplicate a socket and prepare it for sharing with a target process. The
1368 target process must be provided with *process_id*. The resulting bytes object
1369 can then be passed to the target process using some form of interprocess
1370 communication and the socket can be recreated there using :func:`fromshare`.
1371 Once this method has been called, it is safe to close the socket since
1372 the operating system has already duplicated it for the target process.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001373
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001374 Availability: Windows.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001375
1376 .. versionadded:: 3.3
1377
1378
Georg Brandl8569e582010-05-19 20:57:08 +00001379Note that there are no methods :meth:`read` or :meth:`write`; use
1380:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001381
1382Socket objects also have these (read-only) attributes that correspond to the
1383values given to the :class:`socket` constructor.
1384
1385
1386.. attribute:: socket.family
1387
1388 The socket family.
1389
Georg Brandl116aa622007-08-15 14:28:22 +00001390
1391.. attribute:: socket.type
1392
1393 The socket type.
1394
Georg Brandl116aa622007-08-15 14:28:22 +00001395
1396.. attribute:: socket.proto
1397
1398 The socket protocol.
1399
Georg Brandl116aa622007-08-15 14:28:22 +00001400
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001401
1402.. _socket-timeouts:
1403
1404Notes on socket timeouts
1405------------------------
1406
1407A socket object can be in one of three modes: blocking, non-blocking, or
1408timeout. Sockets are by default always created in blocking mode, but this
1409can be changed by calling :func:`setdefaulttimeout`.
1410
1411* In *blocking mode*, operations block until complete or the system returns
1412 an error (such as connection timed out).
1413
1414* In *non-blocking mode*, operations fail (with an error that is unfortunately
1415 system-dependent) if they cannot be completed immediately: functions from the
1416 :mod:`select` can be used to know when and whether a socket is available for
1417 reading or writing.
1418
1419* In *timeout mode*, operations fail if they cannot be completed within the
1420 timeout specified for the socket (they raise a :exc:`timeout` exception)
1421 or if the system returns an error.
1422
1423.. note::
1424 At the operating system level, sockets in *timeout mode* are internally set
1425 in non-blocking mode. Also, the blocking and timeout modes are shared between
1426 file descriptors and socket objects that refer to the same network endpoint.
1427 This implementation detail can have visible consequences if e.g. you decide
1428 to use the :meth:`~socket.fileno()` of a socket.
1429
1430Timeouts and the ``connect`` method
1431^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1432
1433The :meth:`~socket.connect` operation is also subject to the timeout
1434setting, and in general it is recommended to call :meth:`~socket.settimeout`
1435before calling :meth:`~socket.connect` or pass a timeout parameter to
1436:meth:`create_connection`. However, the system network stack may also
1437return a connection timeout error of its own regardless of any Python socket
1438timeout setting.
1439
1440Timeouts and the ``accept`` method
1441^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1442
1443If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1444the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1445behaviour depends on settings of the listening socket:
1446
1447* if the listening socket is in *blocking mode* or in *timeout mode*,
1448 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1449
1450* if the listening socket is in *non-blocking mode*, whether the socket
1451 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1452 is operating system-dependent. If you want to ensure cross-platform
1453 behaviour, it is recommended you manually override this setting.
1454
1455
Georg Brandl116aa622007-08-15 14:28:22 +00001456.. _socket-example:
1457
1458Example
1459-------
1460
1461Here are four minimal example programs using the TCP/IP protocol: a server that
1462echoes all data that it receives back (servicing only one client), and a client
Ezio Melottic048d982013-04-17 04:10:26 +03001463using it. Note that a server must perform the sequence :func:`.socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001464:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1465repeating the :meth:`~socket.accept` to service more than one client), while a
Ezio Melottic048d982013-04-17 04:10:26 +03001466client only needs the sequence :func:`.socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001467note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1468the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001469:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001470
1471The first two examples support IPv4 only. ::
1472
1473 # Echo server program
1474 import socket
1475
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001476 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001477 PORT = 50007 # Arbitrary non-privileged port
Martin Pantere37fc182016-04-24 04:24:36 +00001478 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1479 s.bind((HOST, PORT))
1480 s.listen(1)
1481 conn, addr = s.accept()
1482 with conn:
1483 print('Connected by', addr)
1484 while True:
1485 data = conn.recv(1024)
1486 if not data: break
1487 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001488
1489::
1490
1491 # Echo client program
1492 import socket
1493
1494 HOST = 'daring.cwi.nl' # The remote host
1495 PORT = 50007 # The same port as used by the server
Martin Pantere37fc182016-04-24 04:24:36 +00001496 with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1497 s.connect((HOST, PORT))
1498 s.sendall(b'Hello, world')
1499 data = s.recv(1024)
Georg Brandl6911e3c2007-09-04 07:15:32 +00001500 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001501
1502The next two examples are identical to the above two, but support both IPv4 and
1503IPv6. The server side will listen to the first address family available (it
1504should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1505precedence and the server may not accept IPv4 traffic. The client side will try
1506to connect to the all addresses returned as a result of the name resolution, and
1507sends traffic to the first one connected successfully. ::
1508
1509 # Echo server program
1510 import socket
1511 import sys
1512
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001513 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001514 PORT = 50007 # Arbitrary non-privileged port
1515 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001516 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1517 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001518 af, socktype, proto, canonname, sa = res
1519 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001520 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001521 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001522 s = None
1523 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001524 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001525 s.bind(sa)
1526 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001527 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001528 s.close()
1529 s = None
1530 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001531 break
1532 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001533 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001534 sys.exit(1)
1535 conn, addr = s.accept()
Martin Pantere37fc182016-04-24 04:24:36 +00001536 with conn:
1537 print('Connected by', addr)
1538 while True:
1539 data = conn.recv(1024)
1540 if not data: break
1541 conn.send(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001542
1543::
1544
1545 # Echo client program
1546 import socket
1547 import sys
1548
1549 HOST = 'daring.cwi.nl' # The remote host
1550 PORT = 50007 # The same port as used by the server
1551 s = None
1552 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1553 af, socktype, proto, canonname, sa = res
1554 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001555 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001556 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001557 s = None
1558 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001559 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001560 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001561 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001562 s.close()
1563 s = None
1564 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001565 break
1566 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001567 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001568 sys.exit(1)
Martin Pantere37fc182016-04-24 04:24:36 +00001569 with s:
1570 s.sendall(b'Hello, world')
1571 data = s.recv(1024)
Georg Brandl6911e3c2007-09-04 07:15:32 +00001572 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001573
Georg Brandl48310cd2009-01-03 21:18:54 +00001574
Charles-François Natali47413c12011-10-06 19:47:44 +02001575The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001576sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001577the interface::
1578
1579 import socket
1580
1581 # the public network interface
1582 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001583
Christian Heimesfaf2f632008-01-06 16:59:19 +00001584 # create a raw socket and bind it to the public interface
1585 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1586 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001587
Christian Heimesfaf2f632008-01-06 16:59:19 +00001588 # Include IP headers
1589 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001590
Christian Heimesfaf2f632008-01-06 16:59:19 +00001591 # receive all packages
1592 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001593
Christian Heimesfaf2f632008-01-06 16:59:19 +00001594 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001595 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001596
Christian Heimesc3f30c42008-02-22 16:37:40 +00001597 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001598 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001599
Charles-François Natali47413c12011-10-06 19:47:44 +02001600The last example shows how to use the socket interface to communicate to a CAN
Charles-François Natali773e42d2013-02-05 19:42:01 +01001601network using the raw socket protocol. To use CAN with the broadcast
1602manager protocol instead, open a socket with::
1603
1604 socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1605
1606After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
Mark Dickinsond80b16d2013-02-10 18:43:16 +00001607can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
Charles-François Natali773e42d2013-02-05 19:42:01 +01001608their counterparts) on the socket object as usual.
1609
Donald Stufft8b852f12014-05-20 12:58:38 -04001610This example might require special privileges::
Charles-François Natali47413c12011-10-06 19:47:44 +02001611
1612 import socket
1613 import struct
1614
1615
Georg Brandla673eb82012-03-04 16:17:05 +01001616 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02001617
1618 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001619 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001620
1621 def build_can_frame(can_id, data):
1622 can_dlc = len(data)
1623 data = data.ljust(8, b'\x00')
1624 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1625
1626 def dissect_can_frame(frame):
1627 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1628 return (can_id, can_dlc, data[:can_dlc])
1629
1630
Georg Brandla673eb82012-03-04 16:17:05 +01001631 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02001632 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1633 s.bind(('vcan0',))
1634
1635 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001636 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001637
1638 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1639
1640 try:
1641 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001642 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001643 print('Error sending CAN frame')
1644
1645 try:
1646 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001647 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001648 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001649
Sandro Tosi172f3742011-09-02 20:06:31 +02001650Running an example several times with too small delay between executions, could
1651lead to this error::
1652
Antoine Pitrou5574c302011-10-12 17:53:43 +02001653 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001654
1655This is because the previous execution has left the socket in a ``TIME_WAIT``
1656state, and can't be immediately reused.
1657
1658There is a :mod:`socket` flag to set, in order to prevent this,
1659:data:`socket.SO_REUSEADDR`::
1660
1661 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1662 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1663 s.bind((HOST, PORT))
1664
1665the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1666``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1667
1668
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001669.. seealso::
1670
1671 For an introduction to socket programming (in C), see the following papers:
1672
1673 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1674
1675 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1676 al,
1677
1678 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1679 PS1:7 and PS1:8). The platform-specific reference material for the various
1680 socket-related system calls are also a valuable source of information on the
1681 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1682 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1683 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.