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