1:mod:`socket` --- Low-level networking interface
2================================================
3
4.. module:: socket
5   :synopsis: Low-level networking interface.
6
7**Source code:** :source:`Lib/socket.py`
8
9--------------
10
11This module provides access to the BSD *socket* interface. It is available on
12all modern Unix systems, Windows, MacOS, and probably additional platforms.
13
14.. note::
15
16   Some behavior may be platform dependent, since calls are made to the operating
17   system socket APIs.
18
19.. 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
23:func:`.socket` function returns a :dfn:`socket object` whose methods implement
24the 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
29
30.. 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
39Socket families
40---------------
41
42Depending on the system and the build options, various socket families
43are supported by this module.
44
45The 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:
48
49- 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
52  Linux's abstract namespace is returned as a :term:`bytes-like object` with
53  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
56  bytes-like object can be used for either type of address when
57  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.
62
63  .. versionchanged:: 3.5
64     Writable :term:`bytes-like object` is now accepted.
65
66.. _host_port:
67
68- A pair ``(host, port)`` is used for the :const:`AF_INET` address family,
69  where *host* is a string representing either a hostname in internet domain
70  notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``,
71  and *port* is an integer.
72
73  - For IPv4 addresses, two special forms are accepted instead of a host
74    address: ``''`` represents :const:`INADDR_ANY`, which is used to bind to all
75    interfaces, and the string ``'<broadcast>'`` represents
76    :const:`INADDR_BROADCAST`.  This behavior is not compatible with IPv6,
77    therefore, you may want to avoid these if you intend to support IPv6 with your
78    Python programs.
79
80- For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
81  scope_id)`` is used, where *flowinfo* and *scope_id* represent the ``sin6_flowinfo``
82  and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C.  For
83  :mod:`socket` module methods, *flowinfo* and *scope_id* can be omitted just for
84  backward compatibility.  Note, however, omission of *scope_id* can cause problems
85  in manipulating scoped IPv6 addresses.
86
87  .. versionchanged:: 3.7
88     For multicast addresses (with *scope_id* meaningful) *address* may not contain
89     ``%scope_id`` (or ``zone id``) part. This information is superfluous and may
90     be safely omitted (recommended).
91
92- :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``.
93
94- Linux-only support for TIPC is available using the :const:`AF_TIPC`
95  address family.  TIPC is an open, non-IP based networked protocol designed
96  for use in clustered computer environments.  Addresses are represented by a
97  tuple, and the fields depend on the address type. The general tuple form is
98  ``(addr_type, v1, v2, v3 [, scope])``, where:
99
100  - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`,
101    or :const:`TIPC_ADDR_ID`.
102  - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, and
103    :const:`TIPC_NODE_SCOPE`.
104  - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is
105    the port identifier, and *v3* should be 0.
106
107    If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2*
108    is the lower port number, and *v3* is the upper port number.
109
110    If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
111    reference, and *v3* should be set to 0.
112
113- A tuple ``(interface, )`` is used for the :const:`AF_CAN` address family,
114  where *interface* is a string representing a network interface name like
115  ``'can0'``. The network interface name ``''`` can be used to receive packets
116  from all network interfaces of this family.
117
118  - :const:`CAN_ISOTP` protocol require a tuple ``(interface, rx_addr, tx_addr)``
119    where both additional parameters are unsigned long integer that represent a
120    CAN identifier (standard or extended).
121  - :const:`CAN_J1939` protocol require a tuple ``(interface, name, pgn, addr)``
122    where additional parameters are 64-bit unsigned integer representing the
123    ECU name, a 32-bit unsigned integer representing the Parameter Group Number
124    (PGN), and an 8-bit integer representing the address.
125
126- A string or a tuple ``(id, unit)`` is used for the :const:`SYSPROTO_CONTROL`
127  protocol of the :const:`PF_SYSTEM` family. The string is the name of a
128  kernel control using a dynamically-assigned ID. The tuple can be used if ID
129  and unit number of the kernel control are known or if a registered ID is
130  used.
131
132  .. versionadded:: 3.3
133
134- :const:`AF_BLUETOOTH` supports the following protocols and address
135  formats:
136
137  - :const:`BTPROTO_L2CAP` accepts ``(bdaddr, psm)`` where ``bdaddr`` is
138    the Bluetooth address as a string and ``psm`` is an integer.
139
140  - :const:`BTPROTO_RFCOMM` accepts ``(bdaddr, channel)`` where ``bdaddr``
141    is the Bluetooth address as a string and ``channel`` is an integer.
142
143  - :const:`BTPROTO_HCI` accepts ``(device_id,)`` where ``device_id`` is
144    either an integer or a string with the Bluetooth address of the
145    interface. (This depends on your OS; NetBSD and DragonFlyBSD expect
146    a Bluetooth address while everything else expects an integer.)
147
148    .. versionchanged:: 3.2
149       NetBSD and DragonFlyBSD support added.
150
151  - :const:`BTPROTO_SCO` accepts ``bdaddr`` where ``bdaddr`` is a
152    :class:`bytes` object containing the Bluetooth address in a
153    string format. (ex. ``b'12:23:34:45:56:67'``) This protocol is not
154    supported under FreeBSD.
155
156- :const:`AF_ALG` is a Linux-only socket based interface to Kernel
157  cryptography. An algorithm socket is configured with a tuple of two to four
158  elements ``(type, name [, feat [, mask]])``, where:
159
160  - *type* is the algorithm type as string, e.g. ``aead``, ``hash``,
161    ``skcipher`` or ``rng``.
162
163  - *name* is the algorithm name and operation mode as string, e.g.
164    ``sha256``, ``hmac(sha256)``, ``cbc(aes)`` or ``drbg_nopr_ctr_aes256``.
165
166  - *feat* and *mask* are unsigned 32bit integers.
167
168  .. availability:: Linux 2.6.38, some algorithm types require more recent Kernels.
169
170  .. versionadded:: 3.6
171
172- :const:`AF_VSOCK` allows communication between virtual machines and
173  their hosts. The sockets are represented as a ``(CID, port)`` tuple
174  where the context ID or CID and port are integers.
175
176  .. availability:: Linux >= 4.8 QEMU >= 2.8 ESX >= 4.0 ESX Workstation >= 6.5.
177
178  .. versionadded:: 3.7
179
180- :const:`AF_PACKET` is a low-level interface directly to network devices.
181  The packets are represented by the tuple
182  ``(ifname, proto[, pkttype[, hatype[, addr]]])`` where:
183
184  - *ifname* - String specifying the device name.
185  - *proto* - An in network-byte-order integer specifying the Ethernet
186    protocol number.
187  - *pkttype* - Optional integer specifying the packet type:
188
189    - ``PACKET_HOST`` (the default) - Packet addressed to the local host.
190    - ``PACKET_BROADCAST`` - Physical-layer broadcast packet.
191    - ``PACKET_MULTIHOST`` - Packet sent to a physical-layer multicast address.
192    - ``PACKET_OTHERHOST`` - Packet to some other host that has been caught by
193      a device driver in promiscuous mode.
194    - ``PACKET_OUTGOING`` - Packet originating from the local host that is
195      looped back to a packet socket.
196  - *hatype* - Optional integer specifying the ARP hardware address type.
197  - *addr* - Optional bytes-like object specifying the hardware physical
198    address, whose interpretation depends on the device.
199
200   .. availability:: Linux >= 2.2.
201
202- :const:`AF_QIPCRTR` is a Linux-only socket based interface for communicating
203  with services running on co-processors in Qualcomm platforms. The address
204  family is represented as a ``(node, port)`` tuple where the *node* and *port*
205  are non-negative integers.
206
207   .. availability:: Linux >= 4.7.
208
209  .. versionadded:: 3.8
210
211- :const:`IPPROTO_UDPLITE` is a variant of UDP which allows you to specify
212  what portion of a packet is covered with the checksum. It adds two socket
213  options that you can change.
214  ``self.setsockopt(IPPROTO_UDPLITE, UDPLITE_SEND_CSCOV, length)`` will
215  change what portion of outgoing packets are covered by the checksum and
216  ``self.setsockopt(IPPROTO_UDPLITE, UDPLITE_RECV_CSCOV, length)`` will
217  filter out packets which cover too little of their data. In both cases
218  ``length`` should be in ``range(8, 2**16, 8)``.
219
220  Such a socket should be constructed with
221  ``socket(AF_INET, SOCK_DGRAM, IPPROTO_UDPLITE)`` for IPv4 or
222  ``socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDPLITE)`` for IPv6.
223
224  .. availability:: Linux >= 2.6.20, FreeBSD >= 10.1-RELEASE
225
226  .. versionadded:: 3.9
227
228If you use a hostname in the *host* portion of IPv4/v6 socket address, the
229program may show a nondeterministic behavior, as Python uses the first address
230returned from the DNS resolution.  The socket address will be resolved
231differently into an actual IPv4/v6 address, depending on the results from DNS
232resolution and/or the host configuration.  For deterministic behavior use a
233numeric address in *host* portion.
234
235All errors raise exceptions.  The normal exceptions for invalid argument types
236and out-of-memory conditions can be raised; starting from Python 3.3, errors
237related to socket or address semantics raise :exc:`OSError` or one of its
238subclasses (they used to raise :exc:`socket.error`).
239
240Non-blocking mode is supported through :meth:`~socket.setblocking`.  A
241generalization of this based on timeouts is supported through
242:meth:`~socket.settimeout`.
243
244
245Module contents
246---------------
247
248The module :mod:`socket` exports the following elements.
249
250
251Exceptions
252^^^^^^^^^^
253
254.. exception:: error
255
256   A deprecated alias of :exc:`OSError`.
257
258   .. versionchanged:: 3.3
259      Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
260
261
262.. exception:: herror
263
264   A subclass of :exc:`OSError`, this exception is raised for
265   address-related errors, i.e. for functions that use *h_errno* in the POSIX
266   C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
267   The accompanying value is a pair ``(h_errno, string)`` representing an
268   error returned by a library call.  *h_errno* is a numeric value, while
269   *string* represents the description of *h_errno*, as returned by the
270   :c:func:`hstrerror` C function.
271
272   .. versionchanged:: 3.3
273      This class was made a subclass of :exc:`OSError`.
274
275.. exception:: gaierror
276
277   A subclass of :exc:`OSError`, this exception is raised for
278   address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
279   The accompanying value is a pair ``(error, string)`` representing an error
280   returned by a library call.  *string* represents the description of
281   *error*, as returned by the :c:func:`gai_strerror` C function.  The
282   numeric *error* value will match one of the :const:`EAI_\*` constants
283   defined in this module.
284
285   .. versionchanged:: 3.3
286      This class was made a subclass of :exc:`OSError`.
287
288.. exception:: timeout
289
290   A deprecated alias of :exc:`TimeoutError`.
291
292   A subclass of :exc:`OSError`, this exception is raised when a timeout
293   occurs on a socket which has had timeouts enabled via a prior call to
294   :meth:`~socket.settimeout` (or implicitly through
295   :func:`~socket.setdefaulttimeout`).  The accompanying value is a string
296   whose value is currently always "timed out".
297
298   .. versionchanged:: 3.3
299      This class was made a subclass of :exc:`OSError`.
300
301   .. versionchanged:: 3.10
302      This class was made an alias of :exc:`TimeoutError`.
303
304
305Constants
306^^^^^^^^^
307
308   The AF_* and SOCK_* constants are now :class:`AddressFamily` and
309   :class:`SocketKind` :class:`.IntEnum` collections.
310
311   .. versionadded:: 3.4
312
313.. data:: AF_UNIX
314          AF_INET
315          AF_INET6
316
317   These constants represent the address (and protocol) families, used for the
318   first argument to :func:`.socket`.  If the :const:`AF_UNIX` constant is not
319   defined then this protocol is unsupported.  More constants may be available
320   depending on the system.
321
322
323.. data:: SOCK_STREAM
324          SOCK_DGRAM
325          SOCK_RAW
326          SOCK_RDM
327          SOCK_SEQPACKET
328
329   These constants represent the socket types, used for the second argument to
330   :func:`.socket`.  More constants may be available depending on the system.
331   (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
332   useful.)
333
334.. data:: SOCK_CLOEXEC
335          SOCK_NONBLOCK
336
337   These two constants, if defined, can be combined with the socket types and
338   allow you to set some flags atomically (thus avoiding possible race
339   conditions and the need for separate calls).
340
341   .. seealso::
342
343      `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
344      for a more thorough explanation.
345
346   .. availability:: Linux >= 2.6.27.
347
348   .. versionadded:: 3.2
349
350.. data:: SO_*
351          SOMAXCONN
352          MSG_*
353          SOL_*
354          SCM_*
355          IPPROTO_*
356          IPPORT_*
357          INADDR_*
358          IP_*
359          IPV6_*
360          EAI_*
361          AI_*
362          NI_*
363          TCP_*
364
365   Many constants of these forms, documented in the Unix documentation on sockets
366   and/or the IP protocol, are also defined in the socket module. They are
367   generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
368   methods of socket objects.  In most cases, only those symbols that are defined
369   in the Unix header files are defined; for a few symbols, default values are
370   provided.
371
372   .. versionchanged:: 3.6
373      ``SO_DOMAIN``, ``SO_PROTOCOL``, ``SO_PEERSEC``, ``SO_PASSSEC``,
374      ``TCP_USER_TIMEOUT``, ``TCP_CONGESTION`` were added.
375
376   .. versionchanged:: 3.6.5
377      On Windows, ``TCP_FASTOPEN``, ``TCP_KEEPCNT`` appear if run-time Windows
378      supports.
379
380   .. versionchanged:: 3.7
381      ``TCP_NOTSENT_LOWAT`` was added.
382
383      On Windows, ``TCP_KEEPIDLE``, ``TCP_KEEPINTVL`` appear if run-time Windows
384      supports.
385
386   .. versionchanged:: 3.10
387      ``IP_RECVTOS`` was added.
388       Added ``TCP_KEEPALIVE``. On MacOS this constant can be used in the same
389       way that ``TCP_KEEPIDLE`` is used on Linux.
390
391.. data:: AF_CAN
392          PF_CAN
393          SOL_CAN_*
394          CAN_*
395
396   Many constants of these forms, documented in the Linux documentation, are
397   also defined in the socket module.
398
399   .. availability:: Linux >= 2.6.25.
400
401   .. versionadded:: 3.3
402
403.. data:: CAN_BCM
404          CAN_BCM_*
405
406   CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol.
407   Broadcast manager constants, documented in the Linux documentation, are also
408   defined in the socket module.
409
410   .. availability:: Linux >= 2.6.25.
411
412   .. note::
413      The :data:`CAN_BCM_CAN_FD_FRAME` flag is only available on Linux >= 4.8.
414
415   .. versionadded:: 3.4
416
417.. data:: CAN_RAW_FD_FRAMES
418
419   Enables CAN FD support in a CAN_RAW socket. This is disabled by default.
420   This allows your application to send both CAN and CAN FD frames; however,
421   you must accept both CAN and CAN FD frames when reading from the socket.
422
423   This constant is documented in the Linux documentation.
424
425   .. availability:: Linux >= 3.6.
426
427   .. versionadded:: 3.5
428
429.. data:: CAN_RAW_JOIN_FILTERS
430
431   Joins the applied CAN filters such that only CAN frames that match all
432   given CAN filters are passed to user space.
433
434   This constant is documented in the Linux documentation.
435
436   .. availability:: Linux >= 4.1.
437
438   .. versionadded:: 3.9
439
440.. data:: CAN_ISOTP
441
442   CAN_ISOTP, in the CAN protocol family, is the ISO-TP (ISO 15765-2) protocol.
443   ISO-TP constants, documented in the Linux documentation.
444
445   .. availability:: Linux >= 2.6.25.
446
447   .. versionadded:: 3.7
448
449.. data:: CAN_J1939
450
451   CAN_J1939, in the CAN protocol family, is the SAE J1939 protocol.
452   J1939 constants, documented in the Linux documentation.
453
454   .. availability:: Linux >= 5.4.
455
456   .. versionadded:: 3.9
457
458
459.. data:: AF_PACKET
460          PF_PACKET
461          PACKET_*
462
463   Many constants of these forms, documented in the Linux documentation, are
464   also defined in the socket module.
465
466   .. availability:: Linux >= 2.2.
467
468
469.. data:: AF_RDS
470          PF_RDS
471          SOL_RDS
472          RDS_*
473
474   Many constants of these forms, documented in the Linux documentation, are
475   also defined in the socket module.
476
477   .. availability:: Linux >= 2.6.30.
478
479   .. versionadded:: 3.3
480
481
482.. data:: SIO_RCVALL
483          SIO_KEEPALIVE_VALS
484          SIO_LOOPBACK_FAST_PATH
485          RCVALL_*
486
487   Constants for Windows' WSAIoctl(). The constants are used as arguments to the
488   :meth:`~socket.socket.ioctl` method of socket objects.
489
490   .. versionchanged:: 3.6
491      ``SIO_LOOPBACK_FAST_PATH`` was added.
492
493
494.. data:: TIPC_*
495
496   TIPC related constants, matching the ones exported by the C socket API. See
497   the TIPC documentation for more information.
498
499.. data:: AF_ALG
500          SOL_ALG
501          ALG_*
502
503   Constants for Linux Kernel cryptography.
504
505   .. availability:: Linux >= 2.6.38.
506
507   .. versionadded:: 3.6
508
509
510.. data:: AF_VSOCK
511          IOCTL_VM_SOCKETS_GET_LOCAL_CID
512          VMADDR*
513          SO_VM*
514
515   Constants for Linux host/guest communication.
516
517   .. availability:: Linux >= 4.8.
518
519   .. versionadded:: 3.7
520
521.. data:: AF_LINK
522
523  .. availability:: BSD, macOS.
524
525  .. versionadded:: 3.4
526
527.. data:: has_ipv6
528
529   This constant contains a boolean value which indicates if IPv6 is supported on
530   this platform.
531
532.. data:: BDADDR_ANY
533          BDADDR_LOCAL
534
535   These are string constants containing Bluetooth addresses with special
536   meanings. For example, :const:`BDADDR_ANY` can be used to indicate
537   any address when specifying the binding socket with
538   :const:`BTPROTO_RFCOMM`.
539
540.. data:: HCI_FILTER
541          HCI_TIME_STAMP
542          HCI_DATA_DIR
543
544   For use with :const:`BTPROTO_HCI`. :const:`HCI_FILTER` is not
545   available for NetBSD or DragonFlyBSD. :const:`HCI_TIME_STAMP` and
546   :const:`HCI_DATA_DIR` are not available for FreeBSD, NetBSD, or
547   DragonFlyBSD.
548
549.. data:: AF_QIPCRTR
550
551   Constant for Qualcomm's IPC router protocol, used to communicate with
552   service providing remote processors.
553
554   .. availability:: Linux >= 4.7.
555
556Functions
557^^^^^^^^^
558
559Creating sockets
560''''''''''''''''
561
562The following functions all create :ref:`socket objects <socket-objects>`.
563
564
565.. class:: socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
566
567   Create a new socket using the given address family, socket type and protocol
568   number.  The address family should be :const:`AF_INET` (the default),
569   :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN`, :const:`AF_PACKET`,
570   or :const:`AF_RDS`. The socket type should be :const:`SOCK_STREAM` (the
571   default), :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other
572   ``SOCK_`` constants. The protocol number is usually zero and may be omitted
573   or in the case where the address family is :const:`AF_CAN` the protocol
574   should be one of :const:`CAN_RAW`, :const:`CAN_BCM`, :const:`CAN_ISOTP` or
575   :const:`CAN_J1939`.
576
577   If *fileno* is specified, the values for *family*, *type*, and *proto* are
578   auto-detected from the specified file descriptor.  Auto-detection can be
579   overruled by calling the function with explicit *family*, *type*, or *proto*
580   arguments.  This only affects how Python represents e.g. the return value
581   of :meth:`socket.getpeername` but not the actual OS resource.  Unlike
582   :func:`socket.fromfd`, *fileno* will return the same socket and not a
583   duplicate. This may help close a detached socket using
584   :meth:`socket.close()`.
585
586   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
587
588   .. audit-event:: socket.__new__ self,family,type,protocol socket.socket
589
590   .. versionchanged:: 3.3
591      The AF_CAN family was added.
592      The AF_RDS family was added.
593
594   .. versionchanged:: 3.4
595       The CAN_BCM protocol was added.
596
597   .. versionchanged:: 3.4
598      The returned socket is now non-inheritable.
599
600   .. versionchanged:: 3.7
601       The CAN_ISOTP protocol was added.
602
603   .. versionchanged:: 3.7
604      When :const:`SOCK_NONBLOCK` or :const:`SOCK_CLOEXEC`
605      bit flags are applied to *type* they are cleared, and
606      :attr:`socket.type` will not reflect them.  They are still passed
607      to the underlying system `socket()` call.  Therefore,
608
609      ::
610
611          sock = socket.socket(
612              socket.AF_INET,
613              socket.SOCK_STREAM | socket.SOCK_NONBLOCK)
614
615      will still create a non-blocking socket on OSes that support
616      ``SOCK_NONBLOCK``, but ``sock.type`` will be set to
617      ``socket.SOCK_STREAM``.
618
619   .. versionchanged:: 3.9
620       The CAN_J1939 protocol was added.
621
622   .. versionchanged:: 3.10
623       The IPPROTO_MPTCP protocol was added.
624
625.. function:: socketpair([family[, type[, proto]]])
626
627   Build a pair of connected socket objects using the given address family, socket
628   type, and protocol number.  Address family, socket type, and protocol number are
629   as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
630   if defined on the platform; otherwise, the default is :const:`AF_INET`.
631
632   The newly created sockets are :ref:`non-inheritable <fd_inheritance>`.
633
634   .. versionchanged:: 3.2
635      The returned socket objects now support the whole socket API, rather
636      than a subset.
637
638   .. versionchanged:: 3.4
639      The returned sockets are now non-inheritable.
640
641   .. versionchanged:: 3.5
642      Windows support added.
643
644
645.. function:: create_connection(address[, timeout[, source_address]])
646
647   Connect to a TCP service listening on the internet *address* (a 2-tuple
648   ``(host, port)``), and return the socket object.  This is a higher-level
649   function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
650   it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
651   and then try to connect to all possible addresses in turn until a
652   connection succeeds.  This makes it easy to write clients that are
653   compatible to both IPv4 and IPv6.
654
655   Passing the optional *timeout* parameter will set the timeout on the
656   socket instance before attempting to connect.  If no *timeout* is
657   supplied, the global default timeout setting returned by
658   :func:`getdefaulttimeout` is used.
659
660   If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
661   socket to bind to as its source address before connecting.  If host or port
662   are '' or 0 respectively the OS default behavior will be used.
663
664   .. versionchanged:: 3.2
665      *source_address* was added.
666
667.. function:: create_server(address, *, family=AF_INET, backlog=None, reuse_port=False, dualstack_ipv6=False)
668
669   Convenience function which creates a TCP socket bound to *address* (a 2-tuple
670   ``(host, port)``) and return the socket object.
671
672   *family* should be either :data:`AF_INET` or :data:`AF_INET6`.
673   *backlog* is the queue size passed to :meth:`socket.listen`; when ``0``
674   a default reasonable value is chosen.
675   *reuse_port* dictates whether to set the :data:`SO_REUSEPORT` socket option.
676
677   If *dualstack_ipv6* is true and the platform supports it the socket will
678   be able to accept both IPv4 and IPv6 connections, else it will raise
679   :exc:`ValueError`. Most POSIX platforms and Windows are supposed to support
680   this functionality.
681   When this functionality is enabled the address returned by
682   :meth:`socket.getpeername` when an IPv4 connection occurs will be an IPv6
683   address represented as an IPv4-mapped IPv6 address.
684   If *dualstack_ipv6* is false it will explicitly disable this functionality
685   on platforms that enable it by default (e.g. Linux).
686   This parameter can be used in conjunction with :func:`has_dualstack_ipv6`:
687
688   ::
689
690     import socket
691
692     addr = ("", 8080)  # all interfaces, port 8080
693     if socket.has_dualstack_ipv6():
694         s = socket.create_server(addr, family=socket.AF_INET6, dualstack_ipv6=True)
695     else:
696         s = socket.create_server(addr)
697
698   .. note::
699    On POSIX platforms the :data:`SO_REUSEADDR` socket option is set in order to
700    immediately reuse previous sockets which were bound on the same *address*
701    and remained in TIME_WAIT state.
702
703   .. versionadded:: 3.8
704
705.. function:: has_dualstack_ipv6()
706
707   Return ``True`` if the platform supports creating a TCP socket which can
708   handle both IPv4 and IPv6 connections.
709
710   .. versionadded:: 3.8
711
712.. function:: fromfd(fd, family, type, proto=0)
713
714   Duplicate the file descriptor *fd* (an integer as returned by a file object's
715   :meth:`fileno` method) and build a socket object from the result.  Address
716   family, socket type and protocol number are as for the :func:`.socket` function
717   above. The file descriptor should refer to a socket, but this is not checked ---
718   subsequent operations on the object may fail if the file descriptor is invalid.
719   This function is rarely needed, but can be used to get or set socket options on
720   a socket passed to a program as standard input or output (such as a server
721   started by the Unix inet daemon).  The socket is assumed to be in blocking mode.
722
723   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
724
725   .. versionchanged:: 3.4
726      The returned socket is now non-inheritable.
727
728
729.. function:: fromshare(data)
730
731   Instantiate a socket from data obtained from the :meth:`socket.share`
732   method.  The socket is assumed to be in blocking mode.
733
734   .. availability:: Windows.
735
736   .. versionadded:: 3.3
737
738
739.. data:: SocketType
740
741   This is a Python type object that represents the socket object type. It is the
742   same as ``type(socket(...))``.
743
744
745Other functions
746'''''''''''''''
747
748The :mod:`socket` module also offers various network-related services:
749
750
751.. function:: close(fd)
752
753   Close a socket file descriptor. This is like :func:`os.close`, but for
754   sockets. On some platforms (most noticeable Windows) :func:`os.close`
755   does not work for socket file descriptors.
756
757   .. versionadded:: 3.7
758
759.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
760
761   Translate the *host*/*port* argument into a sequence of 5-tuples that contain
762   all the necessary arguments for creating a socket connected to that service.
763   *host* is a domain name, a string representation of an IPv4/v6 address
764   or ``None``. *port* is a string service name such as ``'http'``, a numeric
765   port number or ``None``.  By passing ``None`` as the value of *host*
766   and *port*, you can pass ``NULL`` to the underlying C API.
767
768   The *family*, *type* and *proto* arguments can be optionally specified
769   in order to narrow the list of addresses returned.  Passing zero as a
770   value for each of these arguments selects the full range of results.
771   The *flags* argument can be one or several of the ``AI_*`` constants,
772   and will influence how results are computed and returned.
773   For example, :const:`AI_NUMERICHOST` will disable domain name resolution
774   and will raise an error if *host* is a domain name.
775
776   The function returns a list of 5-tuples with the following structure:
777
778   ``(family, type, proto, canonname, sockaddr)``
779
780   In these tuples, *family*, *type*, *proto* are all integers and are
781   meant to be passed to the :func:`.socket` function.  *canonname* will be
782   a string representing the canonical name of the *host* if
783   :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
784   will be empty.  *sockaddr* is a tuple describing a socket address, whose
785   format depends on the returned *family* (a ``(address, port)`` 2-tuple for
786   :const:`AF_INET`, a ``(address, port, flowinfo, scope_id)`` 4-tuple for
787   :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
788   method.
789
790   .. audit-event:: socket.getaddrinfo host,port,family,type,protocol socket.getaddrinfo
791
792   The following example fetches address information for a hypothetical TCP
793   connection to ``example.org`` on port 80 (results may differ on your
794   system if IPv6 isn't enabled)::
795
796      >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
797      [(<AddressFamily.AF_INET6: 10>, <AddressFamily.SOCK_STREAM: 1>,
798       6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
799       (<AddressFamily.AF_INET: 2>, <AddressFamily.SOCK_STREAM: 1>,
800       6, '', ('93.184.216.34', 80))]
801
802   .. versionchanged:: 3.2
803      parameters can now be passed using keyword arguments.
804
805   .. versionchanged:: 3.7
806      for IPv6 multicast addresses, string representing an address will not
807      contain ``%scope_id`` part.
808
809.. function:: getfqdn([name])
810
811   Return a fully qualified domain name for *name*. If *name* is omitted or empty,
812   it is interpreted as the local host.  To find the fully qualified name, the
813   hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
814   host, if available.  The first name which includes a period is selected.  In
815   case no fully qualified domain name is available and *name* was provided,
816   it is returned unchanged.  If *name* was empty or equal to ``'0.0.0.0'``,
817   the hostname from :func:`gethostname` is returned.
818
819
820.. function:: gethostbyname(hostname)
821
822   Translate a host name to IPv4 address format.  The IPv4 address is returned as a
823   string, such as  ``'100.50.200.5'``.  If the host name is an IPv4 address itself
824   it is returned unchanged.  See :func:`gethostbyname_ex` for a more complete
825   interface. :func:`gethostbyname` does not support IPv6 name resolution, and
826   :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
827
828   .. audit-event:: socket.gethostbyname hostname socket.gethostbyname
829
830
831.. function:: gethostbyname_ex(hostname)
832
833   Translate a host name to IPv4 address format, extended interface. Return a
834   triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the host's
835   primary host name, *aliaslist* is a (possibly
836   empty) list of alternative host names for the same address, and *ipaddrlist* is
837   a list of IPv4 addresses for the same interface on the same host (often but not
838   always a single address). :func:`gethostbyname_ex` does not support IPv6 name
839   resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
840   stack support.
841
842   .. audit-event:: socket.gethostbyname hostname socket.gethostbyname_ex
843
844
845.. function:: gethostname()
846
847   Return a string containing the hostname of the machine where  the Python
848   interpreter is currently executing.
849
850   .. audit-event:: socket.gethostname "" socket.gethostname
851
852   Note: :func:`gethostname` doesn't always return the fully qualified domain
853   name; use :func:`getfqdn` for that.
854
855
856.. function:: gethostbyaddr(ip_address)
857
858   Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
859   primary host name responding to the given *ip_address*, *aliaslist* is a
860   (possibly empty) list of alternative host names for the same address, and
861   *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
862   host (most likely containing only a single address). To find the fully qualified
863   domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
864   both IPv4 and IPv6.
865
866   .. audit-event:: socket.gethostbyaddr ip_address socket.gethostbyaddr
867
868
869.. function:: getnameinfo(sockaddr, flags)
870
871   Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
872   on the settings of *flags*, the result can contain a fully-qualified domain name
873   or numeric address representation in *host*.  Similarly, *port* can contain a
874   string port name or a numeric port number.
875
876   For IPv6 addresses, ``%scope_id`` is appended to the host part if *sockaddr*
877   contains meaningful *scope_id*. Usually this happens for multicast addresses.
878
879   For more information about *flags* you can consult :manpage:`getnameinfo(3)`.
880
881   .. audit-event:: socket.getnameinfo sockaddr socket.getnameinfo
882
883.. function:: getprotobyname(protocolname)
884
885   Translate an internet protocol name (for example, ``'icmp'``) to a constant
886   suitable for passing as the (optional) third argument to the :func:`.socket`
887   function.  This is usually only needed for sockets opened in "raw" mode
888   (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
889   automatically if the protocol is omitted or zero.
890
891
892.. function:: getservbyname(servicename[, protocolname])
893
894   Translate an internet service name and protocol name to a port number for that
895   service.  The optional protocol name, if given, should be ``'tcp'`` or
896   ``'udp'``, otherwise any protocol will match.
897
898   .. audit-event:: socket.getservbyname servicename,protocolname socket.getservbyname
899
900
901.. function:: getservbyport(port[, protocolname])
902
903   Translate an internet port number and protocol name to a service name for that
904   service.  The optional protocol name, if given, should be ``'tcp'`` or
905   ``'udp'``, otherwise any protocol will match.
906
907   .. audit-event:: socket.getservbyport port,protocolname socket.getservbyport
908
909
910.. function:: ntohl(x)
911
912   Convert 32-bit positive integers from network to host byte order.  On machines
913   where the host byte order is the same as network byte order, this is a no-op;
914   otherwise, it performs a 4-byte swap operation.
915
916
917.. function:: ntohs(x)
918
919   Convert 16-bit positive integers from network to host byte order.  On machines
920   where the host byte order is the same as network byte order, this is a no-op;
921   otherwise, it performs a 2-byte swap operation.
922
923   .. versionchanged:: 3.10
924      Raises :exc:`OverflowError` if *x* does not fit in a 16-bit unsigned
925      integer.
926
927
928.. function:: htonl(x)
929
930   Convert 32-bit positive integers from host to network byte order.  On machines
931   where the host byte order is the same as network byte order, this is a no-op;
932   otherwise, it performs a 4-byte swap operation.
933
934
935.. function:: htons(x)
936
937   Convert 16-bit positive integers from host to network byte order.  On machines
938   where the host byte order is the same as network byte order, this is a no-op;
939   otherwise, it performs a 2-byte swap operation.
940
941   .. versionchanged:: 3.10
942      Raises :exc:`OverflowError` if *x* does not fit in a 16-bit unsigned
943      integer.
944
945
946.. function:: inet_aton(ip_string)
947
948   Convert an IPv4 address from dotted-quad string format (for example,
949   '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
950   length.  This is useful when conversing with a program that uses the standard C
951   library and needs objects of type :c:type:`struct in_addr`, which is the C type
952   for the 32-bit packed binary this function returns.
953
954   :func:`inet_aton` also accepts strings with less than three dots; see the
955   Unix manual page :manpage:`inet(3)` for details.
956
957   If the IPv4 address string passed to this function is invalid,
958   :exc:`OSError` will be raised. Note that exactly what is valid depends on
959   the underlying C implementation of :c:func:`inet_aton`.
960
961   :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
962   instead for IPv4/v6 dual stack support.
963
964
965.. function:: inet_ntoa(packed_ip)
966
967   Convert a 32-bit packed IPv4 address (a :term:`bytes-like object` four
968   bytes in length) to its standard dotted-quad string representation (for example,
969   '123.45.67.89').  This is useful when conversing with a program that uses the
970   standard C library and needs objects of type :c:type:`struct in_addr`, which
971   is the C type for the 32-bit packed binary data this function takes as an
972   argument.
973
974   If the byte sequence passed to this function is not exactly 4 bytes in
975   length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
976   support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
977   stack support.
978
979   .. versionchanged:: 3.5
980      Writable :term:`bytes-like object` is now accepted.
981
982
983.. function:: inet_pton(address_family, ip_string)
984
985   Convert an IP address from its family-specific string format to a packed,
986   binary format. :func:`inet_pton` is useful when a library or network protocol
987   calls for an object of type :c:type:`struct in_addr` (similar to
988   :func:`inet_aton`) or :c:type:`struct in6_addr`.
989
990   Supported values for *address_family* are currently :const:`AF_INET` and
991   :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
992   :exc:`OSError` will be raised. Note that exactly what is valid depends on
993   both the value of *address_family* and the underlying implementation of
994   :c:func:`inet_pton`.
995
996   .. availability:: Unix (maybe not all platforms), Windows.
997
998   .. versionchanged:: 3.4
999      Windows support added
1000
1001
1002.. function:: inet_ntop(address_family, packed_ip)
1003
1004   Convert a packed IP address (a :term:`bytes-like object` of some number of
1005   bytes) to its standard, family-specific string representation (for
1006   example, ``'7.10.0.5'`` or ``'5aef:2b::8'``).
1007   :func:`inet_ntop` is useful when a library or network protocol returns an
1008   object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`) or
1009   :c:type:`struct in6_addr`.
1010
1011   Supported values for *address_family* are currently :const:`AF_INET` and
1012   :const:`AF_INET6`. If the bytes object *packed_ip* is not the correct
1013   length for the specified address family, :exc:`ValueError` will be raised.
1014   :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
1015
1016   .. availability:: Unix (maybe not all platforms), Windows.
1017
1018   .. versionchanged:: 3.4
1019      Windows support added
1020
1021   .. versionchanged:: 3.5
1022      Writable :term:`bytes-like object` is now accepted.
1023
1024
1025..
1026   XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
1027   non-Unix platforms?  The old (obsolete?) 4.2BSD form of the
1028   interface, in which struct msghdr has no msg_control or
1029   msg_controllen members, is not currently supported.
1030
1031.. function:: CMSG_LEN(length)
1032
1033   Return the total length, without trailing padding, of an ancillary
1034   data item with associated data of the given *length*.  This value
1035   can often be used as the buffer size for :meth:`~socket.recvmsg` to
1036   receive a single item of ancillary data, but :rfc:`3542` requires
1037   portable applications to use :func:`CMSG_SPACE` and thus include
1038   space for padding, even when the item will be the last in the
1039   buffer.  Raises :exc:`OverflowError` if *length* is outside the
1040   permissible range of values.
1041
1042   .. availability:: most Unix platforms, possibly others.
1043
1044   .. versionadded:: 3.3
1045
1046
1047.. function:: CMSG_SPACE(length)
1048
1049   Return the buffer size needed for :meth:`~socket.recvmsg` to
1050   receive an ancillary data item with associated data of the given
1051   *length*, along with any trailing padding.  The buffer space needed
1052   to receive multiple items is the sum of the :func:`CMSG_SPACE`
1053   values for their associated data lengths.  Raises
1054   :exc:`OverflowError` if *length* is outside the permissible range
1055   of values.
1056
1057   Note that some systems might support ancillary data without
1058   providing this function.  Also note that setting the buffer size
1059   using the results of this function may not precisely limit the
1060   amount of ancillary data that can be received, since additional
1061   data may be able to fit into the padding area.
1062
1063   .. availability:: most Unix platforms, possibly others.
1064
1065   .. versionadded:: 3.3
1066
1067
1068.. function:: getdefaulttimeout()
1069
1070   Return the default timeout in seconds (float) for new socket objects. A value
1071   of ``None`` indicates that new socket objects have no timeout. When the socket
1072   module is first imported, the default is ``None``.
1073
1074
1075.. function:: setdefaulttimeout(timeout)
1076
1077   Set the default timeout in seconds (float) for new socket objects.  When
1078   the socket module is first imported, the default is ``None``.  See
1079   :meth:`~socket.settimeout` for possible values and their respective
1080   meanings.
1081
1082
1083.. function:: sethostname(name)
1084
1085   Set the machine's hostname to *name*.  This will raise an
1086   :exc:`OSError` if you don't have enough rights.
1087
1088   .. audit-event:: socket.sethostname name socket.sethostname
1089
1090   .. availability:: Unix.
1091
1092   .. versionadded:: 3.3
1093
1094
1095.. function:: if_nameindex()
1096
1097   Return a list of network interface information
1098   (index int, name string) tuples.
1099   :exc:`OSError` if the system call fails.
1100
1101   .. availability:: Unix, Windows.
1102
1103   .. versionadded:: 3.3
1104
1105   .. versionchanged:: 3.8
1106      Windows support was added.
1107
1108   .. note::
1109
1110      On Windows network interfaces have different names in different contexts
1111      (all names are examples):
1112
1113      * UUID: ``{FB605B73-AAC2-49A6-9A2F-25416AEA0573}``
1114      * name: ``ethernet_32770``
1115      * friendly name: ``vEthernet (nat)``
1116      * description: ``Hyper-V Virtual Ethernet Adapter``
1117
1118      This function returns names of the second form from the list, ``ethernet_32770``
1119      in this example case.
1120
1121
1122.. function:: if_nametoindex(if_name)
1123
1124   Return a network interface index number corresponding to an
1125   interface name.
1126   :exc:`OSError` if no interface with the given name exists.
1127
1128   .. availability:: Unix, Windows.
1129
1130   .. versionadded:: 3.3
1131
1132   .. versionchanged:: 3.8
1133      Windows support was added.
1134
1135   .. seealso::
1136      "Interface name" is a name as documented in :func:`if_nameindex`.
1137
1138
1139.. function:: if_indextoname(if_index)
1140
1141   Return a network interface name corresponding to an
1142   interface index number.
1143   :exc:`OSError` if no interface with the given index exists.
1144
1145   .. availability:: Unix, Windows.
1146
1147   .. versionadded:: 3.3
1148
1149   .. versionchanged:: 3.8
1150      Windows support was added.
1151
1152   .. seealso::
1153      "Interface name" is a name as documented in :func:`if_nameindex`.
1154
1155
1156.. function:: send_fds(sock, buffers, fds[, flags[, address]])
1157
1158   Send the list of file descriptors *fds* over an :const:`AF_UNIX` socket *sock*.
1159   The *fds* parameter is a sequence of file descriptors.
1160   Consult :meth:`sendmsg` for the documentation of these parameters.
1161
1162   .. availability:: Unix supporting :meth:`~socket.sendmsg` and :const:`SCM_RIGHTS` mechanism.
1163
1164   .. versionadded:: 3.9
1165
1166
1167.. function:: recv_fds(sock, bufsize, maxfds[, flags])
1168
1169   Receive up to *maxfds* file descriptors from an :const:`AF_UNIX` socket *sock*.
1170   Return ``(msg, list(fds), flags, addr)``.
1171   Consult :meth:`recvmsg` for the documentation of these parameters.
1172
1173   .. availability:: Unix supporting :meth:`~socket.recvmsg` and :const:`SCM_RIGHTS` mechanism.
1174
1175   .. versionadded:: 3.9
1176
1177   .. note::
1178
1179      Any truncated integers at the end of the list of file descriptors.
1180
1181
1182.. _socket-objects:
1183
1184Socket Objects
1185--------------
1186
1187Socket objects have the following methods.  Except for
1188:meth:`~socket.makefile`, these correspond to Unix system calls applicable
1189to sockets.
1190
1191.. versionchanged:: 3.2
1192   Support for the :term:`context manager` protocol was added.  Exiting the
1193   context manager is equivalent to calling :meth:`~socket.close`.
1194
1195
1196.. method:: socket.accept()
1197
1198   Accept a connection. The socket must be bound to an address and listening for
1199   connections. The return value is a pair ``(conn, address)`` where *conn* is a
1200   *new* socket object usable to send and receive data on the connection, and
1201   *address* is the address bound to the socket on the other end of the connection.
1202
1203   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
1204
1205   .. versionchanged:: 3.4
1206      The socket is now non-inheritable.
1207
1208   .. versionchanged:: 3.5
1209      If the system call is interrupted and the signal handler does not raise
1210      an exception, the method now retries the system call instead of raising
1211      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1212
1213
1214.. method:: socket.bind(address)
1215
1216   Bind the socket to *address*.  The socket must not already be bound. (The format
1217   of *address* depends on the address family --- see above.)
1218
1219   .. audit-event:: socket.bind self,address socket.socket.bind
1220
1221.. method:: socket.close()
1222
1223   Mark the socket closed.  The underlying system resource (e.g. a file
1224   descriptor) is also closed when all file objects from :meth:`makefile()`
1225   are closed.  Once that happens, all future operations on the socket
1226   object will fail. The remote end will receive no more data (after
1227   queued data is flushed).
1228
1229   Sockets are automatically closed when they are garbage-collected, but
1230   it is recommended to :meth:`close` them explicitly, or to use a
1231   :keyword:`with` statement around them.
1232
1233   .. versionchanged:: 3.6
1234      :exc:`OSError` is now raised if an error occurs when the underlying
1235      :c:func:`close` call is made.
1236
1237   .. note::
1238
1239      :meth:`close()` releases the resource associated with a connection but
1240      does not necessarily close the connection immediately.  If you want
1241      to close the connection in a timely fashion, call :meth:`shutdown()`
1242      before :meth:`close()`.
1243
1244
1245.. method:: socket.connect(address)
1246
1247   Connect to a remote socket at *address*. (The format of *address* depends on the
1248   address family --- see above.)
1249
1250   If the connection is interrupted by a signal, the method waits until the
1251   connection completes, or raise a :exc:`TimeoutError` on timeout, if the
1252   signal handler doesn't raise an exception and the socket is blocking or has
1253   a timeout. For non-blocking sockets, the method raises an
1254   :exc:`InterruptedError` exception if the connection is interrupted by a
1255   signal (or the exception raised by the signal handler).
1256
1257   .. audit-event:: socket.connect self,address socket.socket.connect
1258
1259   .. versionchanged:: 3.5
1260      The method now waits until the connection completes instead of raising an
1261      :exc:`InterruptedError` exception if the connection is interrupted by a
1262      signal, the signal handler doesn't raise an exception and the socket is
1263      blocking or has a timeout (see the :pep:`475` for the rationale).
1264
1265
1266.. method:: socket.connect_ex(address)
1267
1268   Like ``connect(address)``, but return an error indicator instead of raising an
1269   exception for errors returned by the C-level :c:func:`connect` call (other
1270   problems, such as "host not found," can still raise exceptions).  The error
1271   indicator is ``0`` if the operation succeeded, otherwise the value of the
1272   :c:data:`errno` variable.  This is useful to support, for example, asynchronous
1273   connects.
1274
1275   .. audit-event:: socket.connect self,address socket.socket.connect_ex
1276
1277.. method:: socket.detach()
1278
1279   Put the socket object into closed state without actually closing the
1280   underlying file descriptor.  The file descriptor is returned, and can
1281   be reused for other purposes.
1282
1283   .. versionadded:: 3.2
1284
1285
1286.. method:: socket.dup()
1287
1288   Duplicate the socket.
1289
1290   The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
1291
1292   .. versionchanged:: 3.4
1293      The socket is now non-inheritable.
1294
1295
1296.. method:: socket.fileno()
1297
1298   Return the socket's file descriptor (a small integer), or -1 on failure. This
1299   is useful with :func:`select.select`.
1300
1301   Under Windows the small integer returned by this method cannot be used where a
1302   file descriptor can be used (such as :func:`os.fdopen`).  Unix does not have
1303   this limitation.
1304
1305.. method:: socket.get_inheritable()
1306
1307   Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1308   descriptor or socket's handle: ``True`` if the socket can be inherited in
1309   child processes, ``False`` if it cannot.
1310
1311   .. versionadded:: 3.4
1312
1313
1314.. method:: socket.getpeername()
1315
1316   Return the remote address to which the socket is connected.  This is useful to
1317   find out the port number of a remote IPv4/v6 socket, for instance. (The format
1318   of the address returned depends on the address family --- see above.)  On some
1319   systems this function is not supported.
1320
1321
1322.. method:: socket.getsockname()
1323
1324   Return the socket's own address.  This is useful to find out the port number of
1325   an IPv4/v6 socket, for instance. (The format of the address returned depends on
1326   the address family --- see above.)
1327
1328
1329.. method:: socket.getsockopt(level, optname[, buflen])
1330
1331   Return the value of the given socket option (see the Unix man page
1332   :manpage:`getsockopt(2)`).  The needed symbolic constants (:const:`SO_\*` etc.)
1333   are defined in this module.  If *buflen* is absent, an integer option is assumed
1334   and its integer value is returned by the function.  If *buflen* is present, it
1335   specifies the maximum length of the buffer used to receive the option in, and
1336   this buffer is returned as a bytes object.  It is up to the caller to decode the
1337   contents of the buffer (see the optional built-in module :mod:`struct` for a way
1338   to decode C structures encoded as byte strings).
1339
1340
1341.. method:: socket.getblocking()
1342
1343   Return ``True`` if socket is in blocking mode, ``False`` if in
1344   non-blocking.
1345
1346   This is equivalent to checking ``socket.gettimeout() == 0``.
1347
1348   .. versionadded:: 3.7
1349
1350
1351.. method:: socket.gettimeout()
1352
1353   Return the timeout in seconds (float) associated with socket operations,
1354   or ``None`` if no timeout is set.  This reflects the last call to
1355   :meth:`setblocking` or :meth:`settimeout`.
1356
1357
1358.. method:: socket.ioctl(control, option)
1359
1360   :platform: Windows
1361
1362   The :meth:`ioctl` method is a limited interface to the WSAIoctl system
1363   interface.  Please refer to the `Win32 documentation
1364   <https://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
1365   information.
1366
1367   On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
1368   functions may be used; they accept a socket object as their first argument.
1369
1370   Currently only the following control codes are supported:
1371   ``SIO_RCVALL``, ``SIO_KEEPALIVE_VALS``, and ``SIO_LOOPBACK_FAST_PATH``.
1372
1373   .. versionchanged:: 3.6
1374      ``SIO_LOOPBACK_FAST_PATH`` was added.
1375
1376.. method:: socket.listen([backlog])
1377
1378   Enable a server to accept connections.  If *backlog* is specified, it must
1379   be at least 0 (if it is lower, it is set to 0); it specifies the number of
1380   unaccepted connections that the system will allow before refusing new
1381   connections. If not specified, a default reasonable value is chosen.
1382
1383   .. versionchanged:: 3.5
1384      The *backlog* parameter is now optional.
1385
1386.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
1387                            errors=None, newline=None)
1388
1389   .. index:: single: I/O control; buffering
1390
1391   Return a :term:`file object` associated with the socket.  The exact returned
1392   type depends on the arguments given to :meth:`makefile`.  These arguments are
1393   interpreted the same way as by the built-in :func:`open` function, except
1394   the only supported *mode* values are ``'r'`` (default), ``'w'`` and ``'b'``.
1395
1396   The socket must be in blocking mode; it can have a timeout, but the file
1397   object's internal buffer may end up in an inconsistent state if a timeout
1398   occurs.
1399
1400   Closing the file object returned by :meth:`makefile` won't close the
1401   original socket unless all other file objects have been closed and
1402   :meth:`socket.close` has been called on the socket object.
1403
1404   .. note::
1405
1406      On Windows, the file-like object created by :meth:`makefile` cannot be
1407      used where a file object with a file descriptor is expected, such as the
1408      stream arguments of :meth:`subprocess.Popen`.
1409
1410
1411.. method:: socket.recv(bufsize[, flags])
1412
1413   Receive data from the socket.  The return value is a bytes object representing the
1414   data received.  The maximum amount of data to be received at once is specified
1415   by *bufsize*.  See the Unix manual page :manpage:`recv(2)` for the meaning of
1416   the optional argument *flags*; it defaults to zero.
1417
1418   .. note::
1419
1420      For best match with hardware and network realities, the value of  *bufsize*
1421      should be a relatively small power of 2, for example, 4096.
1422
1423   .. versionchanged:: 3.5
1424      If the system call is interrupted and the signal handler does not raise
1425      an exception, the method now retries the system call instead of raising
1426      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1427
1428
1429.. method:: socket.recvfrom(bufsize[, flags])
1430
1431   Receive data from the socket.  The return value is a pair ``(bytes, address)``
1432   where *bytes* is a bytes object representing the data received and *address* is the
1433   address of the socket sending the data.  See the Unix manual page
1434   :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
1435   to zero. (The format of *address* depends on the address family --- see above.)
1436
1437   .. versionchanged:: 3.5
1438      If the system call is interrupted and the signal handler does not raise
1439      an exception, the method now retries the system call instead of raising
1440      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1441
1442   .. versionchanged:: 3.7
1443      For multicast IPv6 address, first item of *address* does not contain
1444      ``%scope_id`` part anymore. In order to get full IPv6 address use
1445      :func:`getnameinfo`.
1446
1447.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
1448
1449   Receive normal data (up to *bufsize* bytes) and ancillary data from
1450   the socket.  The *ancbufsize* argument sets the size in bytes of
1451   the internal buffer used to receive the ancillary data; it defaults
1452   to 0, meaning that no ancillary data will be received.  Appropriate
1453   buffer sizes for ancillary data can be calculated using
1454   :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
1455   into the buffer might be truncated or discarded.  The *flags*
1456   argument defaults to 0 and has the same meaning as for
1457   :meth:`recv`.
1458
1459   The return value is a 4-tuple: ``(data, ancdata, msg_flags,
1460   address)``.  The *data* item is a :class:`bytes` object holding the
1461   non-ancillary data received.  The *ancdata* item is a list of zero
1462   or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
1463   the ancillary data (control messages) received: *cmsg_level* and
1464   *cmsg_type* are integers specifying the protocol level and
1465   protocol-specific type respectively, and *cmsg_data* is a
1466   :class:`bytes` object holding the associated data.  The *msg_flags*
1467   item is the bitwise OR of various flags indicating conditions on
1468   the received message; see your system documentation for details.
1469   If the receiving socket is unconnected, *address* is the address of
1470   the sending socket, if available; otherwise, its value is
1471   unspecified.
1472
1473   On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
1474   pass file descriptors between processes over an :const:`AF_UNIX`
1475   socket.  When this facility is used (it is often restricted to
1476   :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
1477   ancillary data, items of the form ``(socket.SOL_SOCKET,
1478   socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
1479   representing the new file descriptors as a binary array of the
1480   native C :c:type:`int` type.  If :meth:`recvmsg` raises an
1481   exception after the system call returns, it will first attempt to
1482   close any file descriptors received via this mechanism.
1483
1484   Some systems do not indicate the truncated length of ancillary data
1485   items which have been only partially received.  If an item appears
1486   to extend beyond the end of the buffer, :meth:`recvmsg` will issue
1487   a :exc:`RuntimeWarning`, and will return the part of it which is
1488   inside the buffer provided it has not been truncated before the
1489   start of its associated data.
1490
1491   On systems which support the :const:`SCM_RIGHTS` mechanism, the
1492   following function will receive up to *maxfds* file descriptors,
1493   returning the message data and a list containing the descriptors
1494   (while ignoring unexpected conditions such as unrelated control
1495   messages being received).  See also :meth:`sendmsg`. ::
1496
1497      import socket, array
1498
1499      def recv_fds(sock, msglen, maxfds):
1500          fds = array.array("i")   # Array of ints
1501          msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1502          for cmsg_level, cmsg_type, cmsg_data in ancdata:
1503              if cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS:
1504                  # Append data, ignoring any truncated integers at the end.
1505                  fds.frombytes(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
1506          return msg, list(fds)
1507
1508   .. availability:: most Unix platforms, possibly others.
1509
1510   .. versionadded:: 3.3
1511
1512   .. versionchanged:: 3.5
1513      If the system call is interrupted and the signal handler does not raise
1514      an exception, the method now retries the system call instead of raising
1515      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1516
1517
1518.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1519
1520   Receive normal data and ancillary data from the socket, behaving as
1521   :meth:`recvmsg` would, but scatter the non-ancillary data into a
1522   series of buffers instead of returning a new bytes object.  The
1523   *buffers* argument must be an iterable of objects that export
1524   writable buffers (e.g. :class:`bytearray` objects); these will be
1525   filled with successive chunks of the non-ancillary data until it
1526   has all been written or there are no more buffers.  The operating
1527   system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1528   on the number of buffers that can be used.  The *ancbufsize* and
1529   *flags* arguments have the same meaning as for :meth:`recvmsg`.
1530
1531   The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1532   address)``, where *nbytes* is the total number of bytes of
1533   non-ancillary data written into the buffers, and *ancdata*,
1534   *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1535
1536   Example::
1537
1538      >>> import socket
1539      >>> s1, s2 = socket.socketpair()
1540      >>> b1 = bytearray(b'----')
1541      >>> b2 = bytearray(b'0123456789')
1542      >>> b3 = bytearray(b'--------------')
1543      >>> s1.send(b'Mary had a little lamb')
1544      22
1545      >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1546      (22, [], 0, None)
1547      >>> [b1, b2, b3]
1548      [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1549
1550   .. availability:: most Unix platforms, possibly others.
1551
1552   .. versionadded:: 3.3
1553
1554
1555.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1556
1557   Receive data from the socket, writing it into *buffer* instead of creating a
1558   new bytestring.  The return value is a pair ``(nbytes, address)`` where *nbytes* is
1559   the number of bytes received and *address* is the address of the socket sending
1560   the data.  See the Unix manual page :manpage:`recv(2)` for the meaning of the
1561   optional argument *flags*; it defaults to zero.  (The format of *address*
1562   depends on the address family --- see above.)
1563
1564
1565.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1566
1567   Receive up to *nbytes* bytes from the socket, storing the data into a buffer
1568   rather than creating a new bytestring.  If *nbytes* is not specified (or 0),
1569   receive up to the size available in the given buffer.  Returns the number of
1570   bytes received.  See the Unix manual page :manpage:`recv(2)` for the meaning
1571   of the optional argument *flags*; it defaults to zero.
1572
1573
1574.. method:: socket.send(bytes[, flags])
1575
1576   Send data to the socket.  The socket must be connected to a remote socket.  The
1577   optional *flags* argument has the same meaning as for :meth:`recv` above.
1578   Returns the number of bytes sent. Applications are responsible for checking that
1579   all data has been sent; if only some of the data was transmitted, the
1580   application needs to attempt delivery of the remaining data. For further
1581   information on this topic, consult the :ref:`socket-howto`.
1582
1583   .. versionchanged:: 3.5
1584      If the system call is interrupted and the signal handler does not raise
1585      an exception, the method now retries the system call instead of raising
1586      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1587
1588
1589.. method:: socket.sendall(bytes[, flags])
1590
1591   Send data to the socket.  The socket must be connected to a remote socket.  The
1592   optional *flags* argument has the same meaning as for :meth:`recv` above.
1593   Unlike :meth:`send`, this method continues to send data from *bytes* until
1594   either all data has been sent or an error occurs.  ``None`` is returned on
1595   success.  On error, an exception is raised, and there is no way to determine how
1596   much data, if any, was successfully sent.
1597
1598   .. versionchanged:: 3.5
1599      The socket timeout is no more reset each time data is sent successfully.
1600      The socket timeout is now the maximum total duration to send all data.
1601
1602   .. versionchanged:: 3.5
1603      If the system call is interrupted and the signal handler does not raise
1604      an exception, the method now retries the system call instead of raising
1605      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1606
1607
1608.. method:: socket.sendto(bytes, address)
1609            socket.sendto(bytes, flags, address)
1610
1611   Send data to the socket.  The socket should not be connected to a remote socket,
1612   since the destination socket is specified by *address*.  The optional *flags*
1613   argument has the same meaning as for :meth:`recv` above.  Return the number of
1614   bytes sent. (The format of *address* depends on the address family --- see
1615   above.)
1616
1617   .. audit-event:: socket.sendto self,address socket.socket.sendto
1618
1619   .. versionchanged:: 3.5
1620      If the system call is interrupted and the signal handler does not raise
1621      an exception, the method now retries the system call instead of raising
1622      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1623
1624
1625.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1626
1627   Send normal and ancillary data to the socket, gathering the
1628   non-ancillary data from a series of buffers and concatenating it
1629   into a single message.  The *buffers* argument specifies the
1630   non-ancillary data as an iterable of
1631   :term:`bytes-like objects <bytes-like object>`
1632   (e.g. :class:`bytes` objects); the operating system may set a limit
1633   (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1634   that can be used.  The *ancdata* argument specifies the ancillary
1635   data (control messages) as an iterable of zero or more tuples
1636   ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1637   *cmsg_type* are integers specifying the protocol level and
1638   protocol-specific type respectively, and *cmsg_data* is a
1639   bytes-like object holding the associated data.  Note that
1640   some systems (in particular, systems without :func:`CMSG_SPACE`)
1641   might support sending only one control message per call.  The
1642   *flags* argument defaults to 0 and has the same meaning as for
1643   :meth:`send`.  If *address* is supplied and not ``None``, it sets a
1644   destination address for the message.  The return value is the
1645   number of bytes of non-ancillary data sent.
1646
1647   The following function sends the list of file descriptors *fds*
1648   over an :const:`AF_UNIX` socket, on systems which support the
1649   :const:`SCM_RIGHTS` mechanism.  See also :meth:`recvmsg`. ::
1650
1651      import socket, array
1652
1653      def send_fds(sock, msg, fds):
1654          return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1655
1656   .. availability:: most Unix platforms, possibly others.
1657
1658   .. audit-event:: socket.sendmsg self,address socket.socket.sendmsg
1659
1660   .. versionadded:: 3.3
1661
1662   .. versionchanged:: 3.5
1663      If the system call is interrupted and the signal handler does not raise
1664      an exception, the method now retries the system call instead of raising
1665      an :exc:`InterruptedError` exception (see :pep:`475` for the rationale).
1666
1667.. method:: socket.sendmsg_afalg([msg], *, op[, iv[, assoclen[, flags]]])
1668
1669   Specialized version of :meth:`~socket.sendmsg` for :const:`AF_ALG` socket.
1670   Set mode, IV, AEAD associated data length and flags for :const:`AF_ALG` socket.
1671
1672   .. availability:: Linux >= 2.6.38.
1673
1674   .. versionadded:: 3.6
1675
1676.. method:: socket.sendfile(file, offset=0, count=None)
1677
1678   Send a file until EOF is reached by using high-performance
1679   :mod:`os.sendfile` and return the total number of bytes which were sent.
1680   *file* must be a regular file object opened in binary mode. If
1681   :mod:`os.sendfile` is not available (e.g. Windows) or *file* is not a
1682   regular file :meth:`send` will be used instead. *offset* tells from where to
1683   start reading the file. If specified, *count* is the total number of bytes
1684   to transmit as opposed to sending the file until EOF is reached. File
1685   position is updated on return or also in case of error in which case
1686   :meth:`file.tell() <io.IOBase.tell>` can be used to figure out the number of
1687   bytes which were sent. The socket must be of :const:`SOCK_STREAM` type.
1688   Non-blocking sockets are not supported.
1689
1690   .. versionadded:: 3.5
1691
1692.. method:: socket.set_inheritable(inheritable)
1693
1694   Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1695   descriptor or socket's handle.
1696
1697   .. versionadded:: 3.4
1698
1699
1700.. method:: socket.setblocking(flag)
1701
1702   Set blocking or non-blocking mode of the socket: if *flag* is false, the
1703   socket is set to non-blocking, else to blocking mode.
1704
1705   This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1706
1707   * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1708
1709   * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
1710
1711   .. versionchanged:: 3.7
1712      The method no longer applies :const:`SOCK_NONBLOCK` flag on
1713      :attr:`socket.type`.
1714
1715
1716.. method:: socket.settimeout(value)
1717
1718   Set a timeout on blocking socket operations.  The *value* argument can be a
1719   nonnegative floating point number expressing seconds, or ``None``.
1720   If a non-zero value is given, subsequent socket operations will raise a
1721   :exc:`timeout` exception if the timeout period *value* has elapsed before
1722   the operation has completed.  If zero is given, the socket is put in
1723   non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
1724
1725   For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
1726
1727   .. versionchanged:: 3.7
1728      The method no longer toggles :const:`SOCK_NONBLOCK` flag on
1729      :attr:`socket.type`.
1730
1731
1732.. method:: socket.setsockopt(level, optname, value: int)
1733.. method:: socket.setsockopt(level, optname, value: buffer)
1734   :noindex:
1735.. method:: socket.setsockopt(level, optname, None, optlen: int)
1736   :noindex:
1737
1738   .. index:: module: struct
1739
1740   Set the value of the given socket option (see the Unix manual page
1741   :manpage:`setsockopt(2)`).  The needed symbolic constants are defined in the
1742   :mod:`socket` module (:const:`SO_\*` etc.).  The value can be an integer,
1743   ``None`` or a :term:`bytes-like object` representing a buffer. In the later
1744   case it is up to the caller to ensure that the bytestring contains the
1745   proper bits (see the optional built-in module :mod:`struct` for a way to
1746   encode C structures as bytestrings). When *value* is set to ``None``,
1747   *optlen* argument is required. It's equivalent to call :c:func:`setsockopt` C
1748   function with ``optval=NULL`` and ``optlen=optlen``.
1749
1750
1751   .. versionchanged:: 3.5
1752      Writable :term:`bytes-like object` is now accepted.
1753
1754   .. versionchanged:: 3.6
1755      setsockopt(level, optname, None, optlen: int) form added.
1756
1757
1758.. method:: socket.shutdown(how)
1759
1760   Shut down one or both halves of the connection.  If *how* is :const:`SHUT_RD`,
1761   further receives are disallowed.  If *how* is :const:`SHUT_WR`, further sends
1762   are disallowed.  If *how* is :const:`SHUT_RDWR`, further sends and receives are
1763   disallowed.
1764
1765
1766.. method:: socket.share(process_id)
1767
1768   Duplicate a socket and prepare it for sharing with a target process.  The
1769   target process must be provided with *process_id*.  The resulting bytes object
1770   can then be passed to the target process using some form of interprocess
1771   communication and the socket can be recreated there using :func:`fromshare`.
1772   Once this method has been called, it is safe to close the socket since
1773   the operating system has already duplicated it for the target process.
1774
1775   .. availability:: Windows.
1776
1777   .. versionadded:: 3.3
1778
1779
1780Note that there are no methods :meth:`read` or :meth:`write`; use
1781:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
1782
1783Socket objects also have these (read-only) attributes that correspond to the
1784values given to the :class:`~socket.socket` constructor.
1785
1786
1787.. attribute:: socket.family
1788
1789   The socket family.
1790
1791
1792.. attribute:: socket.type
1793
1794   The socket type.
1795
1796
1797.. attribute:: socket.proto
1798
1799   The socket protocol.
1800
1801
1802
1803.. _socket-timeouts:
1804
1805Notes on socket timeouts
1806------------------------
1807
1808A socket object can be in one of three modes: blocking, non-blocking, or
1809timeout.  Sockets are by default always created in blocking mode, but this
1810can be changed by calling :func:`setdefaulttimeout`.
1811
1812* In *blocking mode*, operations block until complete or the system returns
1813  an error (such as connection timed out).
1814
1815* In *non-blocking mode*, operations fail (with an error that is unfortunately
1816  system-dependent) if they cannot be completed immediately: functions from the
1817  :mod:`select` can be used to know when and whether a socket is available for
1818  reading or writing.
1819
1820* In *timeout mode*, operations fail if they cannot be completed within the
1821  timeout specified for the socket (they raise a :exc:`timeout` exception)
1822  or if the system returns an error.
1823
1824.. note::
1825   At the operating system level, sockets in *timeout mode* are internally set
1826   in non-blocking mode.  Also, the blocking and timeout modes are shared between
1827   file descriptors and socket objects that refer to the same network endpoint.
1828   This implementation detail can have visible consequences if e.g. you decide
1829   to use the :meth:`~socket.fileno()` of a socket.
1830
1831Timeouts and the ``connect`` method
1832^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1833
1834The :meth:`~socket.connect` operation is also subject to the timeout
1835setting, and in general it is recommended to call :meth:`~socket.settimeout`
1836before calling :meth:`~socket.connect` or pass a timeout parameter to
1837:meth:`create_connection`.  However, the system network stack may also
1838return a connection timeout error of its own regardless of any Python socket
1839timeout setting.
1840
1841Timeouts and the ``accept`` method
1842^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1843
1844If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1845the :meth:`~socket.accept` method inherit that timeout.  Otherwise, the
1846behaviour depends on settings of the listening socket:
1847
1848* if the listening socket is in *blocking mode* or in *timeout mode*,
1849  the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1850
1851* if the listening socket is in *non-blocking mode*, whether the socket
1852  returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1853  is operating system-dependent.  If you want to ensure cross-platform
1854  behaviour, it is recommended you manually override this setting.
1855
1856
1857.. _socket-example:
1858
1859Example
1860-------
1861
1862Here are four minimal example programs using the TCP/IP protocol: a server that
1863echoes all data that it receives back (servicing only one client), and a client
1864using it.  Note that a server must perform the sequence :func:`.socket`,
1865:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1866repeating the :meth:`~socket.accept` to service more than one client), while a
1867client only needs the sequence :func:`.socket`, :meth:`~socket.connect`.  Also
1868note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1869the socket it is listening on but on the new socket returned by
1870:meth:`~socket.accept`.
1871
1872The first two examples support IPv4 only. ::
1873
1874   # Echo server program
1875   import socket
1876
1877   HOST = ''                 # Symbolic name meaning all available interfaces
1878   PORT = 50007              # Arbitrary non-privileged port
1879   with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1880       s.bind((HOST, PORT))
1881       s.listen(1)
1882       conn, addr = s.accept()
1883       with conn:
1884           print('Connected by', addr)
1885           while True:
1886               data = conn.recv(1024)
1887               if not data: break
1888               conn.sendall(data)
1889
1890::
1891
1892   # Echo client program
1893   import socket
1894
1895   HOST = 'daring.cwi.nl'    # The remote host
1896   PORT = 50007              # The same port as used by the server
1897   with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
1898       s.connect((HOST, PORT))
1899       s.sendall(b'Hello, world')
1900       data = s.recv(1024)
1901   print('Received', repr(data))
1902
1903The next two examples are identical to the above two, but support both IPv4 and
1904IPv6. The server side will listen to the first address family available (it
1905should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1906precedence and the server may not accept IPv4 traffic. The client side will try
1907to connect to the all addresses returned as a result of the name resolution, and
1908sends traffic to the first one connected successfully. ::
1909
1910   # Echo server program
1911   import socket
1912   import sys
1913
1914   HOST = None               # Symbolic name meaning all available interfaces
1915   PORT = 50007              # Arbitrary non-privileged port
1916   s = None
1917   for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1918                                 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
1919       af, socktype, proto, canonname, sa = res
1920       try:
1921           s = socket.socket(af, socktype, proto)
1922       except OSError as msg:
1923           s = None
1924           continue
1925       try:
1926           s.bind(sa)
1927           s.listen(1)
1928       except OSError as msg:
1929           s.close()
1930           s = None
1931           continue
1932       break
1933   if s is None:
1934       print('could not open socket')
1935       sys.exit(1)
1936   conn, addr = s.accept()
1937   with conn:
1938       print('Connected by', addr)
1939       while True:
1940           data = conn.recv(1024)
1941           if not data: break
1942           conn.send(data)
1943
1944::
1945
1946   # Echo client program
1947   import socket
1948   import sys
1949
1950   HOST = 'daring.cwi.nl'    # The remote host
1951   PORT = 50007              # The same port as used by the server
1952   s = None
1953   for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1954       af, socktype, proto, canonname, sa = res
1955       try:
1956           s = socket.socket(af, socktype, proto)
1957       except OSError as msg:
1958           s = None
1959           continue
1960       try:
1961           s.connect(sa)
1962       except OSError as msg:
1963           s.close()
1964           s = None
1965           continue
1966       break
1967   if s is None:
1968       print('could not open socket')
1969       sys.exit(1)
1970   with s:
1971       s.sendall(b'Hello, world')
1972       data = s.recv(1024)
1973   print('Received', repr(data))
1974
1975The next example shows how to write a very simple network sniffer with raw
1976sockets on Windows. The example requires administrator privileges to modify
1977the interface::
1978
1979   import socket
1980
1981   # the public network interface
1982   HOST = socket.gethostbyname(socket.gethostname())
1983
1984   # create a raw socket and bind it to the public interface
1985   s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1986   s.bind((HOST, 0))
1987
1988   # Include IP headers
1989   s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
1990
1991   # receive all packages
1992   s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
1993
1994   # receive a package
1995   print(s.recvfrom(65565))
1996
1997   # disabled promiscuous mode
1998   s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
1999
2000The next example shows how to use the socket interface to communicate to a CAN
2001network using the raw socket protocol. To use CAN with the broadcast
2002manager protocol instead, open a socket with::
2003
2004    socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
2005
2006After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
2007can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
2008their counterparts) on the socket object as usual.
2009
2010This last example might require special privileges::
2011
2012   import socket
2013   import struct
2014
2015
2016   # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
2017
2018   can_frame_fmt = "=IB3x8s"
2019   can_frame_size = struct.calcsize(can_frame_fmt)
2020
2021   def build_can_frame(can_id, data):
2022       can_dlc = len(data)
2023       data = data.ljust(8, b'\x00')
2024       return struct.pack(can_frame_fmt, can_id, can_dlc, data)
2025
2026   def dissect_can_frame(frame):
2027       can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
2028       return (can_id, can_dlc, data[:can_dlc])
2029
2030
2031   # create a raw socket and bind it to the 'vcan0' interface
2032   s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
2033   s.bind(('vcan0',))
2034
2035   while True:
2036       cf, addr = s.recvfrom(can_frame_size)
2037
2038       print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
2039
2040       try:
2041           s.send(cf)
2042       except OSError:
2043           print('Error sending CAN frame')
2044
2045       try:
2046           s.send(build_can_frame(0x01, b'\x01\x02\x03'))
2047       except OSError:
2048           print('Error sending CAN frame')
2049
2050Running an example several times with too small delay between executions, could
2051lead to this error::
2052
2053   OSError: [Errno 98] Address already in use
2054
2055This is because the previous execution has left the socket in a ``TIME_WAIT``
2056state, and can't be immediately reused.
2057
2058There is a :mod:`socket` flag to set, in order to prevent this,
2059:data:`socket.SO_REUSEADDR`::
2060
2061   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
2062   s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
2063   s.bind((HOST, PORT))
2064
2065the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
2066``TIME_WAIT`` state, without waiting for its natural timeout to expire.
2067
2068
2069.. seealso::
2070
2071   For an introduction to socket programming (in C), see the following papers:
2072
2073   - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
2074
2075   - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J.  Leffler et
2076     al,
2077
2078   both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
2079   PS1:7 and PS1:8).  The platform-specific reference material for the various
2080   socket-related system calls are also a valuable source of information on the
2081   details of socket semantics.  For Unix, refer to the manual pages; for Windows,
2082   see the WinSock (or Winsock 2) specification.  For IPv6-ready APIs, readers may
2083   want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.
2084