1 :mod:`socket` --- Low-level networking interface 2 ================================================ 3 4 .. module:: socket 5 :synopsis: Low-level networking interface. 6 7 8 This module provides access to the BSD *socket* interface. It is available on 9 all modern Unix systems, Windows, Mac OS X, BeOS, OS/2, and probably additional 10 platforms. 11 12 .. note:: 13 14 Some behavior may be platform dependent, since calls are made to the operating 15 system socket APIs. 16 17 For an introduction to socket programming (in C), see the following papers: An 18 Introductory 4.3BSD Interprocess Communication Tutorial, by Stuart Sechrest and 19 An Advanced 4.3BSD Interprocess Communication Tutorial, by Samuel J. Leffler et 20 al, both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections 21 PS1:7 and PS1:8). The platform-specific reference material for the various 22 socket-related system calls are also a valuable source of information on the 23 details of socket semantics. For Unix, refer to the manual pages; for Windows, 24 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may 25 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6. 26 27 .. index:: object: socket 28 29 The Python interface is a straightforward transliteration of the Unix system 30 call and library interface for sockets to Python's object-oriented style: the 31 :func:`.socket` function returns a :dfn:`socket object` whose methods implement 32 the various socket system calls. Parameter types are somewhat higher-level than 33 in the C interface: as with :meth:`read` and :meth:`write` operations on Python 34 files, buffer allocation on receive operations is automatic, and buffer length 35 is implicit on send operations. 36 37 .. _host_port: 38 39 Socket addresses are represented as follows: A single string is used for the 40 :const:`AF_UNIX` address family. A pair ``(host, port)`` is used for the 41 :const:`AF_INET` address family, where *host* is a string representing either a 42 hostname in Internet domain notation like ``'daring.cwi.nl'`` or an IPv4 address 43 like ``'100.50.200.5'``, and *port* is an integer. For 44 :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo, 45 scopeid)`` is used, where *flowinfo* and *scopeid* represents ``sin6_flowinfo`` 46 and ``sin6_scope_id`` member in :const:`struct sockaddr_in6` in C. For 47 :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for 48 backward compatibility. Note, however, omission of *scopeid* can cause problems 49 in manipulating scoped IPv6 addresses. Other address families are currently not 50 supported. The address format required by a particular socket object is 51 automatically selected based on the address family specified when the socket 52 object was created. 53 54 For IPv4 addresses, two special forms are accepted instead of a host address: 55 the empty string represents :const:`INADDR_ANY`, and the string 56 ``'<broadcast>'`` represents :const:`INADDR_BROADCAST`. The behavior is not 57 available for IPv6 for backward compatibility, therefore, you may want to avoid 58 these if you intend to support IPv6 with your Python programs. 59 60 If you use a hostname in the *host* portion of IPv4/v6 socket address, the 61 program may show a nondeterministic behavior, as Python uses the first address 62 returned from the DNS resolution. The socket address will be resolved 63 differently into an actual IPv4/v6 address, depending on the results from DNS 64 resolution and/or the host configuration. For deterministic behavior use a 65 numeric address in *host* portion. 66 67 .. versionadded:: 2.5 68 AF_NETLINK sockets are represented as pairs ``pid, groups``. 69 70 .. versionadded:: 2.6 71 Linux-only support for TIPC is also available using the :const:`AF_TIPC` 72 address family. TIPC is an open, non-IP based networked protocol designed 73 for use in clustered computer environments. Addresses are represented by a 74 tuple, and the fields depend on the address type. The general tuple form is 75 ``(addr_type, v1, v2, v3 [, scope])``, where: 76 77 - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`, 78 or :const:`TIPC_ADDR_ID`. 79 - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, 80 and :const:`TIPC_NODE_SCOPE`. 81 - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is 82 the port identifier, and *v3* should be 0. 83 84 If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2* 85 is the lower port number, and *v3* is the upper port number. 86 87 If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the 88 reference, and *v3* should be set to 0. 89 90 91 All errors raise exceptions. The normal exceptions for invalid argument types 92 and out-of-memory conditions can be raised; errors related to socket or address 93 semantics raise the error :exc:`socket.error`. 94 95 Non-blocking mode is supported through :meth:`~socket.setblocking`. A 96 generalization of this based on timeouts is supported through 97 :meth:`~socket.settimeout`. 98 99 The module :mod:`socket` exports the following constants and functions: 100 101 102 .. exception:: error 103 104 .. index:: module: errno 105 106 This exception is raised for socket-related errors. The accompanying value is 107 either a string telling what went wrong or a pair ``(errno, string)`` 108 representing an error returned by a system call, similar to the value 109 accompanying :exc:`os.error`. See the module :mod:`errno`, which contains names 110 for the error codes defined by the underlying operating system. 111 112 .. versionchanged:: 2.6 113 :exc:`socket.error` is now a child class of :exc:`IOError`. 114 115 116 .. exception:: herror 117 118 This exception is raised for address-related errors, i.e. for functions that use 119 *h_errno* in the C API, including :func:`gethostbyname_ex` and 120 :func:`gethostbyaddr`. 121 122 The accompanying value is a pair ``(h_errno, string)`` representing an error 123 returned by a library call. *string* represents the description of *h_errno*, as 124 returned by the :c:func:`hstrerror` C function. 125 126 127 .. exception:: gaierror 128 129 This exception is raised for address-related errors, for :func:`getaddrinfo` and 130 :func:`getnameinfo`. The accompanying value is a pair ``(error, string)`` 131 representing an error returned by a library call. *string* represents the 132 description of *error*, as returned by the :c:func:`gai_strerror` C function. The 133 *error* value will match one of the :const:`EAI_\*` constants defined in this 134 module. 135 136 137 .. exception:: timeout 138 139 This exception is raised when a timeout occurs on a socket which has had 140 timeouts enabled via a prior call to :meth:`settimeout`. The accompanying value 141 is a string whose value is currently always "timed out". 142 143 .. versionadded:: 2.3 144 145 146 .. data:: AF_UNIX 147 AF_INET 148 AF_INET6 149 150 These constants represent the address (and protocol) families, used for the 151 first argument to :func:`.socket`. If the :const:`AF_UNIX` constant is not 152 defined then this protocol is unsupported. 153 154 155 .. data:: SOCK_STREAM 156 SOCK_DGRAM 157 SOCK_RAW 158 SOCK_RDM 159 SOCK_SEQPACKET 160 161 These constants represent the socket types, used for the second argument to 162 :func:`socket`. (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be 163 generally useful.) 164 165 166 .. data:: SO_* 167 SOMAXCONN 168 MSG_* 169 SOL_* 170 IPPROTO_* 171 IPPORT_* 172 INADDR_* 173 IP_* 174 IPV6_* 175 EAI_* 176 AI_* 177 NI_* 178 TCP_* 179 180 Many constants of these forms, documented in the Unix documentation on sockets 181 and/or the IP protocol, are also defined in the socket module. They are 182 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt` 183 methods of socket objects. In most cases, only those symbols that are defined 184 in the Unix header files are defined; for a few symbols, default values are 185 provided. 186 187 .. data:: SIO_* 188 RCVALL_* 189 190 Constants for Windows' WSAIoctl(). The constants are used as arguments to the 191 :meth:`~socket.socket.ioctl` method of socket objects. 192 193 .. versionadded:: 2.6 194 195 .. data:: TIPC_* 196 197 TIPC related constants, matching the ones exported by the C socket API. See 198 the TIPC documentation for more information. 199 200 .. versionadded:: 2.6 201 202 .. data:: has_ipv6 203 204 This constant contains a boolean value which indicates if IPv6 is supported on 205 this platform. 206 207 .. versionadded:: 2.3 208 209 210 .. function:: create_connection(address[, timeout[, source_address]]) 211 212 Connect to a TCP service listening on the Internet *address* (a 2-tuple 213 ``(host, port)``), and return the socket object. This is a higher-level 214 function than :meth:`socket.connect`: if *host* is a non-numeric hostname, 215 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`, 216 and then try to connect to all possible addresses in turn until a 217 connection succeeds. This makes it easy to write clients that are 218 compatible to both IPv4 and IPv6. 219 220 Passing the optional *timeout* parameter will set the timeout on the 221 socket instance before attempting to connect. If no *timeout* is 222 supplied, the global default timeout setting returned by 223 :func:`getdefaulttimeout` is used. 224 225 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the 226 socket to bind to as its source address before connecting. If host or port 227 are '' or 0 respectively the OS default behavior will be used. 228 229 .. versionadded:: 2.6 230 231 .. versionchanged:: 2.7 232 *source_address* was added. 233 234 235 .. function:: getaddrinfo(host, port[, family[, socktype[, proto[, flags]]]]) 236 237 Translate the *host*/*port* argument into a sequence of 5-tuples that contain 238 all the necessary arguments for creating a socket connected to that service. 239 *host* is a domain name, a string representation of an IPv4/v6 address 240 or ``None``. *port* is a string service name such as ``'http'``, a numeric 241 port number or ``None``. By passing ``None`` as the value of *host* 242 and *port*, you can pass ``NULL`` to the underlying C API. 243 244 The *family*, *socktype* and *proto* arguments can be optionally specified 245 in order to narrow the list of addresses returned. By default, their value 246 is ``0``, meaning that the full range of results is selected. 247 The *flags* argument can be one or several of the ``AI_*`` constants, 248 and will influence how results are computed and returned. Its default value 249 is ``0``. For example, :const:`AI_NUMERICHOST` will disable domain name 250 resolution and will raise an error if *host* is a domain name. 251 252 The function returns a list of 5-tuples with the following structure: 253 254 ``(family, socktype, proto, canonname, sockaddr)`` 255 256 In these tuples, *family*, *socktype*, *proto* are all integers and are 257 meant to be passed to the :func:`.socket` function. *canonname* will be 258 a string representing the canonical name of the *host* if 259 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname* 260 will be empty. *sockaddr* is a tuple describing a socket address, whose 261 format depends on the returned *family* (a ``(address, port)`` 2-tuple for 262 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for 263 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect` 264 method. 265 266 The following example fetches address information for a hypothetical TCP 267 connection to ``example.org`` on port 80 (results may differ on your 268 system if IPv6 isn't enabled):: 269 270 >>> socket.getaddrinfo("example.org", 80, 0, 0, socket.IPPROTO_TCP) 271 [(10, 1, 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)), 272 (2, 1, 6, '', ('93.184.216.34', 80))] 273 274 .. versionadded:: 2.2 275 276 277 .. function:: getfqdn([name]) 278 279 Return a fully qualified domain name for *name*. If *name* is omitted or empty, 280 it is interpreted as the local host. To find the fully qualified name, the 281 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the 282 host, if available. The first name which includes a period is selected. In 283 case no fully qualified domain name is available, the hostname as returned by 284 :func:`gethostname` is returned. 285 286 .. versionadded:: 2.0 287 288 289 .. function:: gethostbyname(hostname) 290 291 Translate a host name to IPv4 address format. The IPv4 address is returned as a 292 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself 293 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete 294 interface. :func:`gethostbyname` does not support IPv6 name resolution, and 295 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support. 296 297 298 .. function:: gethostbyname_ex(hostname) 299 300 Translate a host name to IPv4 address format, extended interface. Return a 301 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary 302 host name responding to the given *ip_address*, *aliaslist* is a (possibly 303 empty) list of alternative host names for the same address, and *ipaddrlist* is 304 a list of IPv4 addresses for the same interface on the same host (often but not 305 always a single address). :func:`gethostbyname_ex` does not support IPv6 name 306 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual 307 stack support. 308 309 310 .. function:: gethostname() 311 312 Return a string containing the hostname of the machine where the Python 313 interpreter is currently executing. 314 315 If you want to know the current machine's IP address, you may want to use 316 ``gethostbyname(gethostname())``. This operation assumes that there is a 317 valid address-to-host mapping for the host, and the assumption does not 318 always hold. 319 320 Note: :func:`gethostname` doesn't always return the fully qualified domain 321 name; use ``getfqdn()`` (see above). 322 323 324 .. function:: gethostbyaddr(ip_address) 325 326 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the 327 primary host name responding to the given *ip_address*, *aliaslist* is a 328 (possibly empty) list of alternative host names for the same address, and 329 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same 330 host (most likely containing only a single address). To find the fully qualified 331 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports 332 both IPv4 and IPv6. 333 334 335 .. function:: getnameinfo(sockaddr, flags) 336 337 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending 338 on the settings of *flags*, the result can contain a fully-qualified domain name 339 or numeric address representation in *host*. Similarly, *port* can contain a 340 string port name or a numeric port number. 341 342 .. versionadded:: 2.2 343 344 345 .. function:: getprotobyname(protocolname) 346 347 Translate an Internet protocol name (for example, ``'icmp'``) to a constant 348 suitable for passing as the (optional) third argument to the :func:`.socket` 349 function. This is usually only needed for sockets opened in "raw" mode 350 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen 351 automatically if the protocol is omitted or zero. 352 353 354 .. function:: getservbyname(servicename[, protocolname]) 355 356 Translate an Internet service name and protocol name to a port number for that 357 service. The optional protocol name, if given, should be ``'tcp'`` or 358 ``'udp'``, otherwise any protocol will match. 359 360 361 .. function:: getservbyport(port[, protocolname]) 362 363 Translate an Internet port number and protocol name to a service name for that 364 service. The optional protocol name, if given, should be ``'tcp'`` or 365 ``'udp'``, otherwise any protocol will match. 366 367 368 .. function:: socket([family[, type[, proto]]]) 369 370 Create a new socket using the given address family, socket type and protocol 371 number. The address family should be :const:`AF_INET` (the default), 372 :const:`AF_INET6` or :const:`AF_UNIX`. The socket type should be 373 :const:`SOCK_STREAM` (the default), :const:`SOCK_DGRAM` or perhaps one of the 374 other ``SOCK_`` constants. The protocol number is usually zero and may be 375 omitted in that case. 376 377 378 .. function:: socketpair([family[, type[, proto]]]) 379 380 Build a pair of connected socket objects using the given address family, socket 381 type, and protocol number. Address family, socket type, and protocol number are 382 as for the :func:`.socket` function above. The default family is :const:`AF_UNIX` 383 if defined on the platform; otherwise, the default is :const:`AF_INET`. 384 Availability: Unix. 385 386 .. versionadded:: 2.4 387 388 389 .. function:: fromfd(fd, family, type[, proto]) 390 391 Duplicate the file descriptor *fd* (an integer as returned by a file object's 392 :meth:`fileno` method) and build a socket object from the result. Address 393 family, socket type and protocol number are as for the :func:`.socket` function 394 above. The file descriptor should refer to a socket, but this is not checked --- 395 subsequent operations on the object may fail if the file descriptor is invalid. 396 This function is rarely needed, but can be used to get or set socket options on 397 a socket passed to a program as standard input or output (such as a server 398 started by the Unix inet daemon). The socket is assumed to be in blocking mode. 399 Availability: Unix. 400 401 402 .. function:: ntohl(x) 403 404 Convert 32-bit positive integers from network to host byte order. On machines 405 where the host byte order is the same as network byte order, this is a no-op; 406 otherwise, it performs a 4-byte swap operation. 407 408 409 .. function:: ntohs(x) 410 411 Convert 16-bit positive integers from network to host byte order. On machines 412 where the host byte order is the same as network byte order, this is a no-op; 413 otherwise, it performs a 2-byte swap operation. 414 415 416 .. function:: htonl(x) 417 418 Convert 32-bit positive integers from host to network byte order. On machines 419 where the host byte order is the same as network byte order, this is a no-op; 420 otherwise, it performs a 4-byte swap operation. 421 422 423 .. function:: htons(x) 424 425 Convert 16-bit positive integers from host to network byte order. On machines 426 where the host byte order is the same as network byte order, this is a no-op; 427 otherwise, it performs a 2-byte swap operation. 428 429 430 .. function:: inet_aton(ip_string) 431 432 Convert an IPv4 address from dotted-quad string format (for example, 433 '123.45.67.89') to 32-bit packed binary format, as a string four characters in 434 length. This is useful when conversing with a program that uses the standard C 435 library and needs objects of type :c:type:`struct in_addr`, which is the C type 436 for the 32-bit packed binary this function returns. 437 438 :func:`inet_aton` also accepts strings with less than three dots; see the 439 Unix manual page :manpage:`inet(3)` for details. 440 441 If the IPv4 address string passed to this function is invalid, 442 :exc:`socket.error` will be raised. Note that exactly what is valid depends on 443 the underlying C implementation of :c:func:`inet_aton`. 444 445 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used 446 instead for IPv4/v6 dual stack support. 447 448 449 .. function:: inet_ntoa(packed_ip) 450 451 Convert a 32-bit packed IPv4 address (a string four characters in length) to its 452 standard dotted-quad string representation (for example, '123.45.67.89'). This 453 is useful when conversing with a program that uses the standard C library and 454 needs objects of type :c:type:`struct in_addr`, which is the C type for the 455 32-bit packed binary data this function takes as an argument. 456 457 If the string passed to this function is not exactly 4 bytes in length, 458 :exc:`socket.error` will be raised. :func:`inet_ntoa` does not support IPv6, and 459 :func:`inet_ntop` should be used instead for IPv4/v6 dual stack support. 460 461 462 .. function:: inet_pton(address_family, ip_string) 463 464 Convert an IP address from its family-specific string format to a packed, binary 465 format. :func:`inet_pton` is useful when a library or network protocol calls for 466 an object of type :c:type:`struct in_addr` (similar to :func:`inet_aton`) or 467 :c:type:`struct in6_addr`. 468 469 Supported values for *address_family* are currently :const:`AF_INET` and 470 :const:`AF_INET6`. If the IP address string *ip_string* is invalid, 471 :exc:`socket.error` will be raised. Note that exactly what is valid depends on 472 both the value of *address_family* and the underlying implementation of 473 :c:func:`inet_pton`. 474 475 Availability: Unix (maybe not all platforms). 476 477 .. versionadded:: 2.3 478 479 480 .. function:: inet_ntop(address_family, packed_ip) 481 482 Convert a packed IP address (a string of some number of characters) to its 483 standard, family-specific string representation (for example, ``'7.10.0.5'`` or 484 ``'5aef:2b::8'``) :func:`inet_ntop` is useful when a library or network protocol 485 returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`) 486 or :c:type:`struct in6_addr`. 487 488 Supported values for *address_family* are currently :const:`AF_INET` and 489 :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the 490 specified address family, :exc:`ValueError` will be raised. A 491 :exc:`socket.error` is raised for errors from the call to :func:`inet_ntop`. 492 493 Availability: Unix (maybe not all platforms). 494 495 .. versionadded:: 2.3 496 497 498 .. function:: getdefaulttimeout() 499 500 Return the default timeout in seconds (float) for new socket objects. A value 501 of ``None`` indicates that new socket objects have no timeout. When the socket 502 module is first imported, the default is ``None``. 503 504 .. versionadded:: 2.3 505 506 507 .. function:: setdefaulttimeout(timeout) 508 509 Set the default timeout in seconds (float) for new socket objects. A value of 510 ``None`` indicates that new socket objects have no timeout. When the socket 511 module is first imported, the default is ``None``. 512 513 .. versionadded:: 2.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 .. seealso:: 523 524 Module :mod:`SocketServer` 525 Classes that simplify writing network servers. 526 527 Module :mod:`ssl` 528 A TLS/SSL wrapper for socket objects. 529 530 531 .. _socket-objects: 532 533 Socket Objects 534 -------------- 535 536 Socket objects have the following methods. Except for :meth:`makefile` these 537 correspond to Unix system calls applicable to sockets. 538 539 540 .. method:: socket.accept() 541 542 Accept a connection. The socket must be bound to an address and listening for 543 connections. The return value is a pair ``(conn, address)`` where *conn* is a 544 *new* socket object usable to send and receive data on the connection, and 545 *address* is the address bound to the socket on the other end of the connection. 546 547 548 .. method:: socket.bind(address) 549 550 Bind the socket to *address*. The socket must not already be bound. (The format 551 of *address* depends on the address family --- see above.) 552 553 .. note:: 554 555 This method has historically accepted a pair of parameters for :const:`AF_INET` 556 addresses instead of only a tuple. This was never intentional and is no longer 557 available in Python 2.0 and later. 558 559 560 .. method:: socket.close() 561 562 Close the socket. All future operations on the socket object will fail. The 563 remote end will receive no more data (after queued data is flushed). Sockets are 564 automatically closed when they are garbage-collected. 565 566 .. note:: 567 568 :meth:`close()` releases the resource associated with a connection but 569 does not necessarily close the connection immediately. If you want 570 to close the connection in a timely fashion, call :meth:`shutdown()` 571 before :meth:`close()`. 572 573 574 .. method:: socket.connect(address) 575 576 Connect to a remote socket at *address*. (The format of *address* depends on the 577 address family --- see above.) 578 579 .. note:: 580 581 This method has historically accepted a pair of parameters for :const:`AF_INET` 582 addresses instead of only a tuple. This was never intentional and is no longer 583 available in Python 2.0 and later. 584 585 586 .. method:: socket.connect_ex(address) 587 588 Like ``connect(address)``, but return an error indicator instead of raising an 589 exception for errors returned by the C-level :c:func:`connect` call (other 590 problems, such as "host not found," can still raise exceptions). The error 591 indicator is ``0`` if the operation succeeded, otherwise the value of the 592 :c:data:`errno` variable. This is useful to support, for example, asynchronous 593 connects. 594 595 .. note:: 596 597 This method has historically accepted a pair of parameters for :const:`AF_INET` 598 addresses instead of only a tuple. This was never intentional and is no longer 599 available in Python 2.0 and later. 600 601 602 .. method:: socket.fileno() 603 604 Return the socket's file descriptor (a small integer). This is useful with 605 :func:`select.select`. 606 607 Under Windows the small integer returned by this method cannot be used where a 608 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have 609 this limitation. 610 611 612 .. method:: socket.getpeername() 613 614 Return the remote address to which the socket is connected. This is useful to 615 find out the port number of a remote IPv4/v6 socket, for instance. (The format 616 of the address returned depends on the address family --- see above.) On some 617 systems this function is not supported. 618 619 620 .. method:: socket.getsockname() 621 622 Return the socket's own address. This is useful to find out the port number of 623 an IPv4/v6 socket, for instance. (The format of the address returned depends on 624 the address family --- see above.) 625 626 627 .. method:: socket.getsockopt(level, optname[, buflen]) 628 629 Return the value of the given socket option (see the Unix man page 630 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.) 631 are defined in this module. If *buflen* is absent, an integer option is assumed 632 and its integer value is returned by the function. If *buflen* is present, it 633 specifies the maximum length of the buffer used to receive the option in, and 634 this buffer is returned as a string. It is up to the caller to decode the 635 contents of the buffer (see the optional built-in module :mod:`struct` for a way 636 to decode C structures encoded as strings). 637 638 639 .. method:: socket.ioctl(control, option) 640 641 :platform: Windows 642 643 The :meth:`ioctl` method is a limited interface to the WSAIoctl system 644 interface. Please refer to the `Win32 documentation 645 <https://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more 646 information. 647 648 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl` 649 functions may be used; they accept a socket object as their first argument. 650 651 .. versionadded:: 2.6 652 653 654 .. method:: socket.listen(backlog) 655 656 Listen for connections made to the socket. The *backlog* argument specifies the 657 maximum number of queued connections and should be at least 0; the maximum value 658 is system-dependent (usually 5), the minimum value is forced to 0. 659 660 661 .. method:: socket.makefile([mode[, bufsize]]) 662 663 .. index:: single: I/O control; buffering 664 665 Return a :dfn:`file object` associated with the socket. (File objects are 666 described in :ref:`bltin-file-objects`.) The file object does not close the 667 socket explicitly when its :meth:`close` method is called, but only removes 668 its reference to the socket object, so that the socket will be closed if it 669 is not referenced from anywhere else. 670 671 The socket must be in blocking mode (it can not have a timeout). The optional 672 *mode* and *bufsize* arguments are interpreted the same way as by the built-in 673 :func:`file` function. 674 675 .. note:: 676 677 On Windows, the file-like object created by :meth:`makefile` cannot be 678 used where a file object with a file descriptor is expected, such as the 679 stream arguments of :meth:`subprocess.Popen`. 680 681 682 .. method:: socket.recv(bufsize[, flags]) 683 684 Receive data from the socket. The return value is a string representing the 685 data received. The maximum amount of data to be received at once is specified 686 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of 687 the optional argument *flags*; it defaults to zero. 688 689 .. note:: 690 691 For best match with hardware and network realities, the value of *bufsize* 692 should be a relatively small power of 2, for example, 4096. 693 694 695 .. method:: socket.recvfrom(bufsize[, flags]) 696 697 Receive data from the socket. The return value is a pair ``(string, address)`` 698 where *string* is a string representing the data received and *address* is the 699 address of the socket sending the data. See the Unix manual page 700 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults 701 to zero. (The format of *address* depends on the address family --- see above.) 702 703 704 .. method:: socket.recvfrom_into(buffer[, nbytes[, flags]]) 705 706 Receive data from the socket, writing it into *buffer* instead of creating a 707 new string. The return value is a pair ``(nbytes, address)`` where *nbytes* is 708 the number of bytes received and *address* is the address of the socket sending 709 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the 710 optional argument *flags*; it defaults to zero. (The format of *address* 711 depends on the address family --- see above.) 712 713 .. versionadded:: 2.5 714 715 716 .. method:: socket.recv_into(buffer[, nbytes[, flags]]) 717 718 Receive up to *nbytes* bytes from the socket, storing the data into a buffer 719 rather than creating a new string. If *nbytes* is not specified (or 0), 720 receive up to the size available in the given buffer. Returns the number of 721 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning 722 of the optional argument *flags*; it defaults to zero. 723 724 .. versionadded:: 2.5 725 726 727 .. method:: socket.send(string[, flags]) 728 729 Send data to the socket. The socket must be connected to a remote socket. The 730 optional *flags* argument has the same meaning as for :meth:`recv` above. 731 Returns the number of bytes sent. Applications are responsible for checking that 732 all data has been sent; if only some of the data was transmitted, the 733 application needs to attempt delivery of the remaining data. For further 734 information on this concept, consult the :ref:`socket-howto`. 735 736 737 .. method:: socket.sendall(string[, flags]) 738 739 Send data to the socket. The socket must be connected to a remote socket. The 740 optional *flags* argument has the same meaning as for :meth:`recv` above. 741 Unlike :meth:`send`, this method continues to send data from *string* until 742 either all data has been sent or an error occurs. ``None`` is returned on 743 success. On error, an exception is raised, and there is no way to determine how 744 much data, if any, was successfully sent. 745 746 747 .. method:: socket.sendto(string, address) 748 socket.sendto(string, flags, address) 749 750 Send data to the socket. The socket should not be connected to a remote socket, 751 since the destination socket is specified by *address*. The optional *flags* 752 argument has the same meaning as for :meth:`recv` above. Return the number of 753 bytes sent. (The format of *address* depends on the address family --- see 754 above.) 755 756 757 .. method:: socket.setblocking(flag) 758 759 Set blocking or non-blocking mode of the socket: if *flag* is 0, the socket is 760 set to non-blocking, else to blocking mode. Initially all sockets are in 761 blocking mode. In non-blocking mode, if a :meth:`recv` call doesn't find any 762 data, or if a :meth:`send` call can't immediately dispose of the data, an 763 :exc:`error` exception is raised; in blocking mode, the calls block until they 764 can proceed. ``s.setblocking(0)`` is equivalent to ``s.settimeout(0.0)``; 765 ``s.setblocking(1)`` is equivalent to ``s.settimeout(None)``. 766 767 768 .. method:: socket.settimeout(value) 769 770 Set a timeout on blocking socket operations. The *value* argument can be a 771 nonnegative float expressing seconds, or ``None``. If a float is given, 772 subsequent socket operations will raise a :exc:`timeout` exception if the 773 timeout period *value* has elapsed before the operation has completed. Setting 774 a timeout of ``None`` disables timeouts on socket operations. 775 ``s.settimeout(0.0)`` is equivalent to ``s.setblocking(0)``; 776 ``s.settimeout(None)`` is equivalent to ``s.setblocking(1)``. 777 778 .. versionadded:: 2.3 779 780 781 .. method:: socket.gettimeout() 782 783 Return the timeout in seconds (float) associated with socket operations, or 784 ``None`` if no timeout is set. This reflects the last call to 785 :meth:`setblocking` or :meth:`settimeout`. 786 787 .. versionadded:: 2.3 788 789 Some notes on socket blocking and timeouts: A socket object can be in one of 790 three modes: blocking, non-blocking, or timeout. Sockets are always created in 791 blocking mode. In blocking mode, operations block until complete or 792 the system returns an error (such as connection timed out). In 793 non-blocking mode, operations fail (with an error that is unfortunately 794 system-dependent) if they cannot be completed immediately. In timeout mode, 795 operations fail if they cannot be completed within the timeout specified for the 796 socket or if the system returns an error. The :meth:`~socket.setblocking` 797 method is simply a shorthand for certain :meth:`~socket.settimeout` calls. 798 799 Timeout mode internally sets the socket in non-blocking mode. The blocking and 800 timeout modes are shared between file descriptors and socket objects that refer 801 to the same network endpoint. A consequence of this is that file objects 802 returned by the :meth:`~socket.makefile` method must only be used when the 803 socket is in blocking mode; in timeout or non-blocking mode file operations 804 that cannot be completed immediately will fail. 805 806 Note that the :meth:`~socket.connect` operation is subject to the timeout 807 setting, and in general it is recommended to call :meth:`~socket.settimeout` 808 before calling :meth:`~socket.connect` or pass a timeout parameter to 809 :meth:`create_connection`. The system network stack may return a connection 810 timeout error of its own regardless of any Python socket timeout setting. 811 812 813 .. method:: socket.setsockopt(level, optname, value) 814 815 .. index:: module: struct 816 817 Set the value of the given socket option (see the Unix manual page 818 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the 819 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a 820 string representing a buffer. In the latter case it is up to the caller to 821 ensure that the string contains the proper bits (see the optional built-in 822 module :mod:`struct` for a way to encode C structures as strings). 823 824 825 .. method:: socket.shutdown(how) 826 827 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`, 828 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends 829 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are 830 disallowed. Depending on the platform, shutting down one half of the connection 831 can also close the opposite half (e.g. on Mac OS X, ``shutdown(SHUT_WR)`` does 832 not allow further reads on the other end of the connection). 833 834 Note that there are no methods :meth:`read` or :meth:`write`; use 835 :meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead. 836 837 Socket objects also have these (read-only) attributes that correspond to the 838 values given to the :class:`~socket.socket` constructor. 839 840 841 .. attribute:: socket.family 842 843 The socket family. 844 845 .. versionadded:: 2.5 846 847 848 .. attribute:: socket.type 849 850 The socket type. 851 852 .. versionadded:: 2.5 853 854 855 .. attribute:: socket.proto 856 857 The socket protocol. 858 859 .. versionadded:: 2.5 860 861 862 .. _socket-example: 863 864 Example 865 ------- 866 867 Here are four minimal example programs using the TCP/IP protocol: a server that 868 echoes all data that it receives back (servicing only one client), and a client 869 using it. Note that a server must perform the sequence :func:`.socket`, 870 :meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly 871 repeating the :meth:`~socket.accept` to service more than one client), while a 872 client only needs the sequence :func:`.socket`, :meth:`~socket.connect`. Also 873 note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on 874 the socket it is listening on but on the new socket returned by 875 :meth:`~socket.accept`. 876 877 The first two examples support IPv4 only. :: 878 879 # Echo server program 880 import socket 881 882 HOST = '' # Symbolic name meaning all available interfaces 883 PORT = 50007 # Arbitrary non-privileged port 884 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 885 s.bind((HOST, PORT)) 886 s.listen(1) 887 conn, addr = s.accept() 888 print 'Connected by', addr 889 while 1: 890 data = conn.recv(1024) 891 if not data: break 892 conn.sendall(data) 893 conn.close() 894 895 :: 896 897 # Echo client program 898 import socket 899 900 HOST = 'daring.cwi.nl' # The remote host 901 PORT = 50007 # The same port as used by the server 902 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 903 s.connect((HOST, PORT)) 904 s.sendall('Hello, world') 905 data = s.recv(1024) 906 s.close() 907 print 'Received', repr(data) 908 909 The next two examples are identical to the above two, but support both IPv4 and 910 IPv6. The server side will listen to the first address family available (it 911 should listen to both instead). On most of IPv6-ready systems, IPv6 will take 912 precedence and the server may not accept IPv4 traffic. The client side will try 913 to connect to the all addresses returned as a result of the name resolution, and 914 sends traffic to the first one connected successfully. :: 915 916 # Echo server program 917 import socket 918 import sys 919 920 HOST = None # Symbolic name meaning all available interfaces 921 PORT = 50007 # Arbitrary non-privileged port 922 s = None 923 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, 924 socket.SOCK_STREAM, 0, socket.AI_PASSIVE): 925 af, socktype, proto, canonname, sa = res 926 try: 927 s = socket.socket(af, socktype, proto) 928 except socket.error as msg: 929 s = None 930 continue 931 try: 932 s.bind(sa) 933 s.listen(1) 934 except socket.error as msg: 935 s.close() 936 s = None 937 continue 938 break 939 if s is None: 940 print 'could not open socket' 941 sys.exit(1) 942 conn, addr = s.accept() 943 print 'Connected by', addr 944 while 1: 945 data = conn.recv(1024) 946 if not data: break 947 conn.send(data) 948 conn.close() 949 950 :: 951 952 # Echo client program 953 import socket 954 import sys 955 956 HOST = 'daring.cwi.nl' # The remote host 957 PORT = 50007 # The same port as used by the server 958 s = None 959 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM): 960 af, socktype, proto, canonname, sa = res 961 try: 962 s = socket.socket(af, socktype, proto) 963 except socket.error as msg: 964 s = None 965 continue 966 try: 967 s.connect(sa) 968 except socket.error as msg: 969 s.close() 970 s = None 971 continue 972 break 973 if s is None: 974 print 'could not open socket' 975 sys.exit(1) 976 s.sendall('Hello, world') 977 data = s.recv(1024) 978 s.close() 979 print 'Received', repr(data) 980 981 982 The last example shows how to write a very simple network sniffer with raw 983 sockets on Windows. The example requires administrator privileges to modify 984 the interface:: 985 986 import socket 987 988 # the public network interface 989 HOST = socket.gethostbyname(socket.gethostname()) 990 991 # create a raw socket and bind it to the public interface 992 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP) 993 s.bind((HOST, 0)) 994 995 # Include IP headers 996 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) 997 998 # receive all packages 999 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) 1000 1001 # receive a package 1002 print s.recvfrom(65565) 1003 1004 # disabled promiscuous mode 1005 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF) 1006 1007 1008 Running an example several times with too small delay between executions, could 1009 lead to this error:: 1010 1011 socket.error: [Errno 98] Address already in use 1012 1013 This is because the previous execution has left the socket in a ``TIME_WAIT`` 1014 state, and can't be immediately reused. 1015 1016 There is a :mod:`socket` flag to set, in order to prevent this, 1017 :data:`socket.SO_REUSEADDR`:: 1018 1019 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 1020 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 1021 s.bind((HOST, PORT)) 1022 1023 the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in 1024 ``TIME_WAIT`` state, without waiting for its natural timeout to expire. 1025