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