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