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