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