blob: 17a99e2b373d1c22abec8131f323de767be57c7a [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`socket` --- Low-level networking interface
2================================================
3
4.. module:: socket
5 :synopsis: Low-level networking interface.
6
7
8This module provides access to the BSD *socket* interface. It is available on
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00009all modern Unix systems, Windows, MacOS, OS/2, and probably additional
Georg Brandl116aa622007-08-15 14:28:22 +000010platforms.
11
12.. note::
13
14 Some behavior may be platform dependent, since calls are made to the operating
15 system socket APIs.
16
Georg Brandl116aa622007-08-15 14:28:22 +000017.. index:: object: socket
18
19The Python interface is a straightforward transliteration of the Unix system
20call and library interface for sockets to Python's object-oriented style: the
21:func:`socket` function returns a :dfn:`socket object` whose methods implement
22the various socket system calls. Parameter types are somewhat higher-level than
23in the C interface: as with :meth:`read` and :meth:`write` operations on Python
24files, buffer allocation on receive operations is automatic, and buffer length
25is implicit on send operations.
26
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000027
Antoine Pitroue1bc8982011-01-02 22:12:22 +000028.. seealso::
29
30 Module :mod:`socketserver`
31 Classes that simplify writing network servers.
32
33 Module :mod:`ssl`
34 A TLS/SSL wrapper for socket objects.
35
36
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000037Socket families
38---------------
39
40Depending on the system and the build options, various socket families
41are supported by this module.
42
43Socket addresses are represented as follows:
44
45- A single string is used for the :const:`AF_UNIX` address family.
46
47- A pair ``(host, port)`` is used for the :const:`AF_INET` address family,
48 where *host* is a string representing either a hostname in Internet domain
49 notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``,
50 and *port* is an integral port number.
51
52- For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
53 scopeid)`` is used, where *flowinfo* and *scopeid* represent the ``sin6_flowinfo``
54 and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C. For
55 :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for
56 backward compatibility. Note, however, omission of *scopeid* can cause problems
57 in manipulating scoped IPv6 addresses.
58
59- :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``.
60
61- Linux-only support for TIPC is available using the :const:`AF_TIPC`
62 address family. TIPC is an open, non-IP based networked protocol designed
63 for use in clustered computer environments. Addresses are represented by a
64 tuple, and the fields depend on the address type. The general tuple form is
65 ``(addr_type, v1, v2, v3 [, scope])``, where:
66
67 - *addr_type* is one of TIPC_ADDR_NAMESEQ, TIPC_ADDR_NAME, or
68 TIPC_ADDR_ID.
69 - *scope* is one of TIPC_ZONE_SCOPE, TIPC_CLUSTER_SCOPE, and
70 TIPC_NODE_SCOPE.
71 - If *addr_type* is TIPC_ADDR_NAME, then *v1* is the server type, *v2* is
72 the port identifier, and *v3* should be 0.
73
74 If *addr_type* is TIPC_ADDR_NAMESEQ, then *v1* is the server type, *v2*
75 is the lower port number, and *v3* is the upper port number.
76
77 If *addr_type* is TIPC_ADDR_ID, then *v1* is the node, *v2* is the
78 reference, and *v3* should be set to 0.
79
80 If *addr_type* is TIPC_ADDR_ID, then *v1* is the node, *v2* is the
81 reference, and *v3* should be set to 0.
82
Charles-François Natali47413c12011-10-06 19:47:44 +020083- A tuple ``(interface, )`` is used for the :const:`AF_CAN` address family,
84 where *interface* is a string representing a network interface name like
85 ``'can0'``. The network interface name ``''`` can be used to receive packets
86 from all network interfaces of this family.
87
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000088- Certain other address families (:const:`AF_BLUETOOTH`, :const:`AF_PACKET`)
89 support specific representations.
90
91 .. XXX document them!
Georg Brandl116aa622007-08-15 14:28:22 +000092
93For IPv4 addresses, two special forms are accepted instead of a host address:
94the empty string represents :const:`INADDR_ANY`, and the string
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000095``'<broadcast>'`` represents :const:`INADDR_BROADCAST`. This behavior is not
96compatible with IPv6, therefore, you may want to avoid these if you intend
97to support IPv6 with your Python programs.
Georg Brandl116aa622007-08-15 14:28:22 +000098
99If you use a hostname in the *host* portion of IPv4/v6 socket address, the
100program may show a nondeterministic behavior, as Python uses the first address
101returned from the DNS resolution. The socket address will be resolved
102differently into an actual IPv4/v6 address, depending on the results from DNS
103resolution and/or the host configuration. For deterministic behavior use a
104numeric address in *host* portion.
105
Georg Brandl116aa622007-08-15 14:28:22 +0000106All errors raise exceptions. The normal exceptions for invalid argument types
Antoine Pitrou5574c302011-10-12 17:53:43 +0200107and out-of-memory conditions can be raised; starting from Python 3.3, errors
108related to socket or address semantics raise :exc:`OSError` or one of its
109subclasses (they used to raise :exc:`socket.error`).
Georg Brandl116aa622007-08-15 14:28:22 +0000110
Georg Brandl8569e582010-05-19 20:57:08 +0000111Non-blocking mode is supported through :meth:`~socket.setblocking`. A
112generalization of this based on timeouts is supported through
113:meth:`~socket.settimeout`.
Georg Brandl116aa622007-08-15 14:28:22 +0000114
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000115
116Module contents
117---------------
118
Georg Brandl116aa622007-08-15 14:28:22 +0000119The module :mod:`socket` exports the following constants and functions:
120
121
122.. exception:: error
123
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200124 A deprecated alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000125
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200126 .. versionchanged:: 3.3
127 Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000128
129
130.. exception:: herror
131
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200132 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000133 address-related errors, i.e. for functions that use *h_errno* in the POSIX
134 C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
135 The accompanying value is a pair ``(h_errno, string)`` representing an
136 error returned by a library call. *h_errno* is a numeric value, while
137 *string* represents the description of *h_errno*, as returned by the
138 :c:func:`hstrerror` C function.
Georg Brandl116aa622007-08-15 14:28:22 +0000139
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200140 .. versionchanged:: 3.3
141 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000142
143.. exception:: gaierror
144
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200145 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000146 address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
147 The accompanying value is a pair ``(error, string)`` representing an error
148 returned by a library call. *string* represents the description of
149 *error*, as returned by the :c:func:`gai_strerror` C function. The
150 numeric *error* value will match one of the :const:`EAI_\*` constants
151 defined in this module.
Georg Brandl116aa622007-08-15 14:28:22 +0000152
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200153 .. versionchanged:: 3.3
154 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000155
156.. exception:: timeout
157
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200158 A subclass of :exc:`OSError`, this exception is raised when a timeout
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000159 occurs on a socket which has had timeouts enabled via a prior call to
160 :meth:`~socket.settimeout` (or implicitly through
161 :func:`~socket.setdefaulttimeout`). The accompanying value is a string
162 whose value is currently always "timed out".
Georg Brandl116aa622007-08-15 14:28:22 +0000163
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200164 .. versionchanged:: 3.3
165 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000166
167.. data:: AF_UNIX
168 AF_INET
169 AF_INET6
170
171 These constants represent the address (and protocol) families, used for the
172 first argument to :func:`socket`. If the :const:`AF_UNIX` constant is not
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000173 defined then this protocol is unsupported. More constants may be available
174 depending on the system.
Georg Brandl116aa622007-08-15 14:28:22 +0000175
176
177.. data:: SOCK_STREAM
178 SOCK_DGRAM
179 SOCK_RAW
180 SOCK_RDM
181 SOCK_SEQPACKET
182
183 These constants represent the socket types, used for the second argument to
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000184 :func:`socket`. More constants may be available depending on the system.
185 (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
186 useful.)
Georg Brandl116aa622007-08-15 14:28:22 +0000187
Antoine Pitroub1c54962010-10-14 15:05:38 +0000188.. data:: SOCK_CLOEXEC
189 SOCK_NONBLOCK
190
191 These two constants, if defined, can be combined with the socket types and
192 allow you to set some flags atomically (thus avoiding possible race
193 conditions and the need for separate calls).
194
195 .. seealso::
196
197 `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
198 for a more thorough explanation.
199
200 Availability: Linux >= 2.6.27.
201
202 .. versionadded:: 3.2
Georg Brandl116aa622007-08-15 14:28:22 +0000203
204.. data:: SO_*
205 SOMAXCONN
206 MSG_*
207 SOL_*
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000208 SCM_*
Georg Brandl116aa622007-08-15 14:28:22 +0000209 IPPROTO_*
210 IPPORT_*
211 INADDR_*
212 IP_*
213 IPV6_*
214 EAI_*
215 AI_*
216 NI_*
217 TCP_*
218
219 Many constants of these forms, documented in the Unix documentation on sockets
220 and/or the IP protocol, are also defined in the socket module. They are
221 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
222 methods of socket objects. In most cases, only those symbols that are defined
223 in the Unix header files are defined; for a few symbols, default values are
224 provided.
225
Charles-François Natali47413c12011-10-06 19:47:44 +0200226.. data:: AF_CAN
227 PF_CAN
228 SOL_CAN_*
229 CAN_*
230
231 Many constants of these forms, documented in the Linux documentation, are
232 also defined in the socket module.
233
234 Availability: Linux >= 2.6.25.
235
236 .. versionadded:: 3.3
237
238
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100239.. data:: AF_RDS
240 PF_RDS
241 SOL_RDS
242 RDS_*
243
244 Many constants of these forms, documented in the Linux documentation, are
245 also defined in the socket module.
246
247 Availability: Linux >= 2.6.30.
248
249 .. versionadded:: 3.3
250
251
Christian Heimesfaf2f632008-01-06 16:59:19 +0000252.. data:: SIO_*
253 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000254
Christian Heimesfaf2f632008-01-06 16:59:19 +0000255 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
256 :meth:`ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000257
Georg Brandl116aa622007-08-15 14:28:22 +0000258
Christian Heimes043d6f62008-01-07 17:19:16 +0000259.. data:: TIPC_*
260
261 TIPC related constants, matching the ones exported by the C socket API. See
262 the TIPC documentation for more information.
263
264
Georg Brandl116aa622007-08-15 14:28:22 +0000265.. data:: has_ipv6
266
267 This constant contains a boolean value which indicates if IPv6 is supported on
268 this platform.
269
Georg Brandl116aa622007-08-15 14:28:22 +0000270
Gregory P. Smithb4066372010-01-03 03:28:29 +0000271.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000272
Georg Brandlf78e02b2008-06-10 17:40:04 +0000273 Convenience function. Connect to *address* (a 2-tuple ``(host, port)``),
274 and return the socket object. Passing the optional *timeout* parameter will
275 set the timeout on the socket instance before attempting to connect. If no
276 *timeout* is supplied, the global default timeout setting returned by
277 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000278
Gregory P. Smithb4066372010-01-03 03:28:29 +0000279 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
280 socket to bind to as its source address before connecting. If host or port
281 are '' or 0 respectively the OS default behavior will be used.
282
283 .. versionchanged:: 3.2
284 *source_address* was added.
285
Giampaolo Rodolàb383dbb2010-09-08 22:44:12 +0000286 .. versionchanged:: 3.2
287 support for the :keyword:`with` statement was added.
288
Georg Brandl116aa622007-08-15 14:28:22 +0000289
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000290.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000291
Antoine Pitrou91035972010-05-31 17:04:40 +0000292 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
293 all the necessary arguments for creating a socket connected to that service.
294 *host* is a domain name, a string representation of an IPv4/v6 address
295 or ``None``. *port* is a string service name such as ``'http'``, a numeric
296 port number or ``None``. By passing ``None`` as the value of *host*
297 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000298
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000299 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000300 in order to narrow the list of addresses returned. Passing zero as a
301 value for each of these arguments selects the full range of results.
302 The *flags* argument can be one or several of the ``AI_*`` constants,
303 and will influence how results are computed and returned.
304 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
305 and will raise an error if *host* is a domain name.
306
307 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000308
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000309 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000310
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000311 In these tuples, *family*, *type*, *proto* are all integers and are
Antoine Pitrou91035972010-05-31 17:04:40 +0000312 meant to be passed to the :func:`socket` function. *canonname* will be
313 a string representing the canonical name of the *host* if
314 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
315 will be empty. *sockaddr* is a tuple describing a socket address, whose
316 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
317 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
318 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
319 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000320
Antoine Pitrou91035972010-05-31 17:04:40 +0000321 The following example fetches address information for a hypothetical TCP
322 connection to ``www.python.org`` on port 80 (results may differ on your
323 system if IPv6 isn't enabled)::
324
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000325 >>> socket.getaddrinfo("www.python.org", 80, proto=socket.SOL_TCP)
Antoine Pitrou91035972010-05-31 17:04:40 +0000326 [(2, 1, 6, '', ('82.94.164.162', 80)),
327 (10, 1, 6, '', ('2001:888:2000:d::a2', 80, 0, 0))]
Georg Brandl116aa622007-08-15 14:28:22 +0000328
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000329 .. versionchanged:: 3.2
330 parameters can now be passed as single keyword arguments.
331
Georg Brandl116aa622007-08-15 14:28:22 +0000332.. function:: getfqdn([name])
333
334 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
335 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000336 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000337 host, if available. The first name which includes a period is selected. In
338 case no fully qualified domain name is available, the hostname as returned by
339 :func:`gethostname` is returned.
340
Georg Brandl116aa622007-08-15 14:28:22 +0000341
342.. function:: gethostbyname(hostname)
343
344 Translate a host name to IPv4 address format. The IPv4 address is returned as a
345 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
346 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
347 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
348 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
349
350
351.. function:: gethostbyname_ex(hostname)
352
353 Translate a host name to IPv4 address format, extended interface. Return a
354 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
355 host name responding to the given *ip_address*, *aliaslist* is a (possibly
356 empty) list of alternative host names for the same address, and *ipaddrlist* is
357 a list of IPv4 addresses for the same interface on the same host (often but not
358 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
359 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
360 stack support.
361
362
363.. function:: gethostname()
364
365 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000366 interpreter is currently executing.
367
368 If you want to know the current machine's IP address, you may want to use
369 ``gethostbyname(gethostname())``. This operation assumes that there is a
370 valid address-to-host mapping for the host, and the assumption does not
371 always hold.
372
373 Note: :func:`gethostname` doesn't always return the fully qualified domain
374 name; use ``getfqdn()`` (see above).
Georg Brandl116aa622007-08-15 14:28:22 +0000375
376
377.. function:: gethostbyaddr(ip_address)
378
379 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
380 primary host name responding to the given *ip_address*, *aliaslist* is a
381 (possibly empty) list of alternative host names for the same address, and
382 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
383 host (most likely containing only a single address). To find the fully qualified
384 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
385 both IPv4 and IPv6.
386
387
388.. function:: getnameinfo(sockaddr, flags)
389
390 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
391 on the settings of *flags*, the result can contain a fully-qualified domain name
392 or numeric address representation in *host*. Similarly, *port* can contain a
393 string port name or a numeric port number.
394
Georg Brandl116aa622007-08-15 14:28:22 +0000395
396.. function:: getprotobyname(protocolname)
397
398 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
399 suitable for passing as the (optional) third argument to the :func:`socket`
400 function. This is usually only needed for sockets opened in "raw" mode
401 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
402 automatically if the protocol is omitted or zero.
403
404
405.. function:: getservbyname(servicename[, protocolname])
406
407 Translate an Internet service name and protocol name to a port number for that
408 service. The optional protocol name, if given, should be ``'tcp'`` or
409 ``'udp'``, otherwise any protocol will match.
410
411
412.. function:: getservbyport(port[, protocolname])
413
414 Translate an Internet port number and protocol name to a service name for that
415 service. The optional protocol name, if given, should be ``'tcp'`` or
416 ``'udp'``, otherwise any protocol will match.
417
418
419.. function:: socket([family[, type[, proto]]])
420
421 Create a new socket using the given address family, socket type and protocol
422 number. The address family should be :const:`AF_INET` (the default),
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100423 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
424 socket type should be :const:`SOCK_STREAM` (the default),
425 :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
426 constants. The protocol number is usually zero and may be omitted in that
427 case or :const:`CAN_RAW` in case the address family is :const:`AF_CAN`.
Charles-François Natali47413c12011-10-06 19:47:44 +0200428
429 .. versionchanged:: 3.3
430 The AF_CAN family was added.
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100431 The AF_RDS family was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000432
433
Georg Brandl116aa622007-08-15 14:28:22 +0000434.. function:: socketpair([family[, type[, proto]]])
435
436 Build a pair of connected socket objects using the given address family, socket
437 type, and protocol number. Address family, socket type, and protocol number are
438 as for the :func:`socket` function above. The default family is :const:`AF_UNIX`
439 if defined on the platform; otherwise, the default is :const:`AF_INET`.
440 Availability: Unix.
441
Antoine Pitrou9e0b8642010-09-14 18:00:02 +0000442 .. versionchanged:: 3.2
443 The returned socket objects now support the whole socket API, rather
444 than a subset.
445
Georg Brandl116aa622007-08-15 14:28:22 +0000446
447.. function:: fromfd(fd, family, type[, proto])
448
449 Duplicate the file descriptor *fd* (an integer as returned by a file object's
450 :meth:`fileno` method) and build a socket object from the result. Address
451 family, socket type and protocol number are as for the :func:`socket` function
452 above. The file descriptor should refer to a socket, but this is not checked ---
453 subsequent operations on the object may fail if the file descriptor is invalid.
454 This function is rarely needed, but can be used to get or set socket options on
455 a socket passed to a program as standard input or output (such as a server
456 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000457
458
459.. function:: ntohl(x)
460
461 Convert 32-bit positive integers from network to host byte order. On machines
462 where the host byte order is the same as network byte order, this is a no-op;
463 otherwise, it performs a 4-byte swap operation.
464
465
466.. function:: ntohs(x)
467
468 Convert 16-bit positive integers from network to host byte order. On machines
469 where the host byte order is the same as network byte order, this is a no-op;
470 otherwise, it performs a 2-byte swap operation.
471
472
473.. function:: htonl(x)
474
475 Convert 32-bit positive integers from host to network byte order. On machines
476 where the host byte order is the same as network byte order, this is a no-op;
477 otherwise, it performs a 4-byte swap operation.
478
479
480.. function:: htons(x)
481
482 Convert 16-bit positive integers from host to network byte order. On machines
483 where the host byte order is the same as network byte order, this is a no-op;
484 otherwise, it performs a 2-byte swap operation.
485
486
487.. function:: inet_aton(ip_string)
488
489 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000490 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000491 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000492 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000493 for the 32-bit packed binary this function returns.
494
Georg Brandlf5123ef2009-06-04 10:28:36 +0000495 :func:`inet_aton` also accepts strings with less than three dots; see the
496 Unix manual page :manpage:`inet(3)` for details.
497
Georg Brandl116aa622007-08-15 14:28:22 +0000498 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200499 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000500 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000501
Georg Brandl5f259722009-05-04 20:50:30 +0000502 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000503 instead for IPv4/v6 dual stack support.
504
505
506.. function:: inet_ntoa(packed_ip)
507
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000508 Convert a 32-bit packed IPv4 address (a bytes object four characters in
509 length) to its standard dotted-quad string representation (for example,
510 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000511 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000512 is the C type for the 32-bit packed binary data this function takes as an
513 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000514
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000515 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200516 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000517 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000518 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000519
520
521.. function:: inet_pton(address_family, ip_string)
522
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000523 Convert an IP address from its family-specific string format to a packed,
524 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000525 calls for an object of type :c:type:`struct in_addr` (similar to
526 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000527
528 Supported values for *address_family* are currently :const:`AF_INET` and
529 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200530 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000531 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000532 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000533
534 Availability: Unix (maybe not all platforms).
535
Georg Brandl116aa622007-08-15 14:28:22 +0000536
537.. function:: inet_ntop(address_family, packed_ip)
538
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000539 Convert a packed IP address (a bytes object of some number of characters) to its
Georg Brandl116aa622007-08-15 14:28:22 +0000540 standard, family-specific string representation (for example, ``'7.10.0.5'`` or
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000541 ``'5aef:2b::8'``). :func:`inet_ntop` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000542 returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`)
543 or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000544
545 Supported values for *address_family* are currently :const:`AF_INET` and
546 :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the
547 specified address family, :exc:`ValueError` will be raised. A
Antoine Pitrou5574c302011-10-12 17:53:43 +0200548 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000549
550 Availability: Unix (maybe not all platforms).
551
Georg Brandl116aa622007-08-15 14:28:22 +0000552
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000553..
554 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
555 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
556 interface, in which struct msghdr has no msg_control or
557 msg_controllen members, is not currently supported.
558
559.. function:: CMSG_LEN(length)
560
561 Return the total length, without trailing padding, of an ancillary
562 data item with associated data of the given *length*. This value
563 can often be used as the buffer size for :meth:`~socket.recvmsg` to
564 receive a single item of ancillary data, but :rfc:`3542` requires
565 portable applications to use :func:`CMSG_SPACE` and thus include
566 space for padding, even when the item will be the last in the
567 buffer. Raises :exc:`OverflowError` if *length* is outside the
568 permissible range of values.
569
570 Availability: most Unix platforms, possibly others.
571
572 .. versionadded:: 3.3
573
574
575.. function:: CMSG_SPACE(length)
576
577 Return the buffer size needed for :meth:`~socket.recvmsg` to
578 receive an ancillary data item with associated data of the given
579 *length*, along with any trailing padding. The buffer space needed
580 to receive multiple items is the sum of the :func:`CMSG_SPACE`
581 values for their associated data lengths. Raises
582 :exc:`OverflowError` if *length* is outside the permissible range
583 of values.
584
585 Note that some systems might support ancillary data without
586 providing this function. Also note that setting the buffer size
587 using the results of this function may not precisely limit the
588 amount of ancillary data that can be received, since additional
589 data may be able to fit into the padding area.
590
591 Availability: most Unix platforms, possibly others.
592
593 .. versionadded:: 3.3
594
595
Georg Brandl116aa622007-08-15 14:28:22 +0000596.. function:: getdefaulttimeout()
597
Ezio Melotti388c9452011-08-14 08:28:57 +0300598 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000599 of ``None`` indicates that new socket objects have no timeout. When the socket
600 module is first imported, the default is ``None``.
601
Georg Brandl116aa622007-08-15 14:28:22 +0000602
603.. function:: setdefaulttimeout(timeout)
604
Ezio Melotti388c9452011-08-14 08:28:57 +0300605 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000606 the socket module is first imported, the default is ``None``. See
607 :meth:`~socket.settimeout` for possible values and their respective
608 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000609
Georg Brandl116aa622007-08-15 14:28:22 +0000610
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000611.. function:: sethostname(name)
612
613 Set the machine's hostname to *name*. This will raise a
Antoine Pitrou5574c302011-10-12 17:53:43 +0200614 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000615
616 Availability: Unix.
617
618 .. versionadded:: 3.3
619
620
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700621.. function:: if_nameindex()
622
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700623 Return a list of network interface information
624 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200625 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700626
627 Availability: Unix.
628
629 .. versionadded:: 3.3
630
631
632.. function:: if_nametoindex(if_name)
633
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700634 Return a network interface index number corresponding to an
635 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200636 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700637
638 Availability: Unix.
639
640 .. versionadded:: 3.3
641
642
643.. function:: if_indextoname(if_index)
644
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700645 Return a network interface name corresponding to a
646 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200647 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700648
649 Availability: Unix.
650
651 .. versionadded:: 3.3
652
653
Georg Brandl116aa622007-08-15 14:28:22 +0000654.. data:: SocketType
655
656 This is a Python type object that represents the socket object type. It is the
657 same as ``type(socket(...))``.
658
659
Georg Brandl116aa622007-08-15 14:28:22 +0000660.. _socket-objects:
661
662Socket Objects
663--------------
664
665Socket objects have the following methods. Except for :meth:`makefile` these
666correspond to Unix system calls applicable to sockets.
667
668
669.. method:: socket.accept()
670
671 Accept a connection. The socket must be bound to an address and listening for
672 connections. The return value is a pair ``(conn, address)`` where *conn* is a
673 *new* socket object usable to send and receive data on the connection, and
674 *address* is the address bound to the socket on the other end of the connection.
675
676
677.. method:: socket.bind(address)
678
679 Bind the socket to *address*. The socket must not already be bound. (The format
680 of *address* depends on the address family --- see above.)
681
Georg Brandl116aa622007-08-15 14:28:22 +0000682
683.. method:: socket.close()
684
685 Close the socket. All future operations on the socket object will fail. The
686 remote end will receive no more data (after queued data is flushed). Sockets are
687 automatically closed when they are garbage-collected.
688
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000689 .. note::
690 :meth:`close()` releases the resource associated with a connection but
691 does not necessarily close the connection immediately. If you want
692 to close the connection in a timely fashion, call :meth:`shutdown()`
693 before :meth:`close()`.
694
Georg Brandl116aa622007-08-15 14:28:22 +0000695
696.. method:: socket.connect(address)
697
698 Connect to a remote socket at *address*. (The format of *address* depends on the
699 address family --- see above.)
700
Georg Brandl116aa622007-08-15 14:28:22 +0000701
702.. method:: socket.connect_ex(address)
703
704 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +0000705 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +0000706 problems, such as "host not found," can still raise exceptions). The error
707 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +0000708 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +0000709 connects.
710
Georg Brandl116aa622007-08-15 14:28:22 +0000711
Antoine Pitrou6e451df2010-08-09 20:39:54 +0000712.. method:: socket.detach()
713
714 Put the socket object into closed state without actually closing the
715 underlying file descriptor. The file descriptor is returned, and can
716 be reused for other purposes.
717
718 .. versionadded:: 3.2
719
720
Georg Brandl116aa622007-08-15 14:28:22 +0000721.. method:: socket.fileno()
722
723 Return the socket's file descriptor (a small integer). This is useful with
724 :func:`select.select`.
725
726 Under Windows the small integer returned by this method cannot be used where a
727 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
728 this limitation.
729
730
731.. method:: socket.getpeername()
732
733 Return the remote address to which the socket is connected. This is useful to
734 find out the port number of a remote IPv4/v6 socket, for instance. (The format
735 of the address returned depends on the address family --- see above.) On some
736 systems this function is not supported.
737
738
739.. method:: socket.getsockname()
740
741 Return the socket's own address. This is useful to find out the port number of
742 an IPv4/v6 socket, for instance. (The format of the address returned depends on
743 the address family --- see above.)
744
745
746.. method:: socket.getsockopt(level, optname[, buflen])
747
748 Return the value of the given socket option (see the Unix man page
749 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
750 are defined in this module. If *buflen* is absent, an integer option is assumed
751 and its integer value is returned by the function. If *buflen* is present, it
752 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000753 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +0000754 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000755 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +0000756
Georg Brandl48310cd2009-01-03 21:18:54 +0000757
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000758.. method:: socket.gettimeout()
759
Ezio Melotti388c9452011-08-14 08:28:57 +0300760 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000761 or ``None`` if no timeout is set. This reflects the last call to
762 :meth:`setblocking` or :meth:`settimeout`.
763
764
Christian Heimesfaf2f632008-01-06 16:59:19 +0000765.. method:: socket.ioctl(control, option)
766
Georg Brandl48310cd2009-01-03 21:18:54 +0000767 :platform: Windows
768
Christian Heimes679db4a2008-01-18 09:56:22 +0000769 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +0000770 interface. Please refer to the `Win32 documentation
771 <http://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
772 information.
Georg Brandl48310cd2009-01-03 21:18:54 +0000773
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000774 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
775 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000776
777.. method:: socket.listen(backlog)
778
779 Listen for connections made to the socket. The *backlog* argument specifies the
Antoine Pitrou1be815a2011-05-10 19:16:29 +0200780 maximum number of queued connections and should be at least 0; the maximum value
781 is system-dependent (usually 5), the minimum value is forced to 0.
Georg Brandl116aa622007-08-15 14:28:22 +0000782
783
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000784.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
785 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000786
787 .. index:: single: I/O control; buffering
788
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000789 Return a :term:`file object` associated with the socket. The exact returned
790 type depends on the arguments given to :meth:`makefile`. These arguments are
791 interpreted the same way as by the built-in :func:`open` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000792
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000793 Closing the file object won't close the socket unless there are no remaining
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000794 references to the socket. The socket must be in blocking mode; it can have
795 a timeout, but the file object's internal buffer may end up in a inconsistent
796 state if a timeout occurs.
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000797
798 .. note::
799
800 On Windows, the file-like object created by :meth:`makefile` cannot be
801 used where a file object with a file descriptor is expected, such as the
802 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000803
Georg Brandl116aa622007-08-15 14:28:22 +0000804
805.. method:: socket.recv(bufsize[, flags])
806
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000807 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +0000808 data received. The maximum amount of data to be received at once is specified
809 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
810 the optional argument *flags*; it defaults to zero.
811
812 .. note::
813
814 For best match with hardware and network realities, the value of *bufsize*
815 should be a relatively small power of 2, for example, 4096.
816
817
818.. method:: socket.recvfrom(bufsize[, flags])
819
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000820 Receive data from the socket. The return value is a pair ``(bytes, address)``
821 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +0000822 address of the socket sending the data. See the Unix manual page
823 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
824 to zero. (The format of *address* depends on the address family --- see above.)
825
826
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000827.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
828
829 Receive normal data (up to *bufsize* bytes) and ancillary data from
830 the socket. The *ancbufsize* argument sets the size in bytes of
831 the internal buffer used to receive the ancillary data; it defaults
832 to 0, meaning that no ancillary data will be received. Appropriate
833 buffer sizes for ancillary data can be calculated using
834 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
835 into the buffer might be truncated or discarded. The *flags*
836 argument defaults to 0 and has the same meaning as for
837 :meth:`recv`.
838
839 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
840 address)``. The *data* item is a :class:`bytes` object holding the
841 non-ancillary data received. The *ancdata* item is a list of zero
842 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
843 the ancillary data (control messages) received: *cmsg_level* and
844 *cmsg_type* are integers specifying the protocol level and
845 protocol-specific type respectively, and *cmsg_data* is a
846 :class:`bytes` object holding the associated data. The *msg_flags*
847 item is the bitwise OR of various flags indicating conditions on
848 the received message; see your system documentation for details.
849 If the receiving socket is unconnected, *address* is the address of
850 the sending socket, if available; otherwise, its value is
851 unspecified.
852
853 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
854 pass file descriptors between processes over an :const:`AF_UNIX`
855 socket. When this facility is used (it is often restricted to
856 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
857 ancillary data, items of the form ``(socket.SOL_SOCKET,
858 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
859 representing the new file descriptors as a binary array of the
860 native C :c:type:`int` type. If :meth:`recvmsg` raises an
861 exception after the system call returns, it will first attempt to
862 close any file descriptors received via this mechanism.
863
864 Some systems do not indicate the truncated length of ancillary data
865 items which have been only partially received. If an item appears
866 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
867 a :exc:`RuntimeWarning`, and will return the part of it which is
868 inside the buffer provided it has not been truncated before the
869 start of its associated data.
870
871 On systems which support the :const:`SCM_RIGHTS` mechanism, the
872 following function will receive up to *maxfds* file descriptors,
873 returning the message data and a list containing the descriptors
874 (while ignoring unexpected conditions such as unrelated control
875 messages being received). See also :meth:`sendmsg`. ::
876
877 import socket, array
878
879 def recv_fds(sock, msglen, maxfds):
880 fds = array.array("i") # Array of ints
881 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
882 for cmsg_level, cmsg_type, cmsg_data in ancdata:
883 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
884 # Append data, ignoring any truncated integers at the end.
885 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
886 return msg, list(fds)
887
888 Availability: most Unix platforms, possibly others.
889
890 .. versionadded:: 3.3
891
892
893.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
894
895 Receive normal data and ancillary data from the socket, behaving as
896 :meth:`recvmsg` would, but scatter the non-ancillary data into a
897 series of buffers instead of returning a new bytes object. The
898 *buffers* argument must be an iterable of objects that export
899 writable buffers (e.g. :class:`bytearray` objects); these will be
900 filled with successive chunks of the non-ancillary data until it
901 has all been written or there are no more buffers. The operating
902 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
903 on the number of buffers that can be used. The *ancbufsize* and
904 *flags* arguments have the same meaning as for :meth:`recvmsg`.
905
906 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
907 address)``, where *nbytes* is the total number of bytes of
908 non-ancillary data written into the buffers, and *ancdata*,
909 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
910
911 Example::
912
913 >>> import socket
914 >>> s1, s2 = socket.socketpair()
915 >>> b1 = bytearray(b'----')
916 >>> b2 = bytearray(b'0123456789')
917 >>> b3 = bytearray(b'--------------')
918 >>> s1.send(b'Mary had a little lamb')
919 22
920 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
921 (22, [], 0, None)
922 >>> [b1, b2, b3]
923 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
924
925 Availability: most Unix platforms, possibly others.
926
927 .. versionadded:: 3.3
928
929
Georg Brandl116aa622007-08-15 14:28:22 +0000930.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
931
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000932 Receive data from the socket, writing it into *buffer* instead of creating a
933 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +0000934 the number of bytes received and *address* is the address of the socket sending
935 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
936 optional argument *flags*; it defaults to zero. (The format of *address*
937 depends on the address family --- see above.)
938
Georg Brandl116aa622007-08-15 14:28:22 +0000939
940.. method:: socket.recv_into(buffer[, nbytes[, flags]])
941
942 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000943 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000944 receive up to the size available in the given buffer. Returns the number of
945 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
946 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +0000947
Georg Brandl116aa622007-08-15 14:28:22 +0000948
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000949.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +0000950
951 Send data to the socket. The socket must be connected to a remote socket. The
952 optional *flags* argument has the same meaning as for :meth:`recv` above.
953 Returns the number of bytes sent. Applications are responsible for checking that
954 all data has been sent; if only some of the data was transmitted, the
955 application needs to attempt delivery of the remaining data.
956
957
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000958.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +0000959
960 Send data to the socket. The socket must be connected to a remote socket. The
961 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000962 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +0000963 either all data has been sent or an error occurs. ``None`` is returned on
964 success. On error, an exception is raised, and there is no way to determine how
965 much data, if any, was successfully sent.
966
967
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000968.. method:: socket.sendto(bytes[, flags], address)
Georg Brandl116aa622007-08-15 14:28:22 +0000969
970 Send data to the socket. The socket should not be connected to a remote socket,
971 since the destination socket is specified by *address*. The optional *flags*
972 argument has the same meaning as for :meth:`recv` above. Return the number of
973 bytes sent. (The format of *address* depends on the address family --- see
974 above.)
975
976
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000977.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
978
979 Send normal and ancillary data to the socket, gathering the
980 non-ancillary data from a series of buffers and concatenating it
981 into a single message. The *buffers* argument specifies the
982 non-ancillary data as an iterable of buffer-compatible objects
983 (e.g. :class:`bytes` objects); the operating system may set a limit
984 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
985 that can be used. The *ancdata* argument specifies the ancillary
986 data (control messages) as an iterable of zero or more tuples
987 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
988 *cmsg_type* are integers specifying the protocol level and
989 protocol-specific type respectively, and *cmsg_data* is a
990 buffer-compatible object holding the associated data. Note that
991 some systems (in particular, systems without :func:`CMSG_SPACE`)
992 might support sending only one control message per call. The
993 *flags* argument defaults to 0 and has the same meaning as for
994 :meth:`send`. If *address* is supplied and not ``None``, it sets a
995 destination address for the message. The return value is the
996 number of bytes of non-ancillary data sent.
997
998 The following function sends the list of file descriptors *fds*
999 over an :const:`AF_UNIX` socket, on systems which support the
1000 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1001
1002 import socket, array
1003
1004 def send_fds(sock, msg, fds):
1005 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1006
1007 Availability: most Unix platforms, possibly others.
1008
1009 .. versionadded:: 3.3
1010
1011
Georg Brandl116aa622007-08-15 14:28:22 +00001012.. method:: socket.setblocking(flag)
1013
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001014 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1015 socket is set to non-blocking, else to blocking mode.
1016
1017 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1018
1019 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1020
1021 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001022
1023
1024.. method:: socket.settimeout(value)
1025
1026 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001027 nonnegative floating point number expressing seconds, or ``None``.
1028 If a non-zero value is given, subsequent socket operations will raise a
1029 :exc:`timeout` exception if the timeout period *value* has elapsed before
1030 the operation has completed. If zero is given, the socket is put in
1031 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001032
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001033 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001034
1035
1036.. method:: socket.setsockopt(level, optname, value)
1037
1038 .. index:: module: struct
1039
1040 Set the value of the given socket option (see the Unix manual page
1041 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
1042 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001043 bytes object representing a buffer. In the latter case it is up to the caller to
1044 ensure that the bytestring contains the proper bits (see the optional built-in
1045 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001046
1047
1048.. method:: socket.shutdown(how)
1049
1050 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1051 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1052 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Georg Brandl0104bcd2010-07-11 09:23:11 +00001053 disallowed. Depending on the platform, shutting down one half of the connection
1054 can also close the opposite half (e.g. on Mac OS X, ``shutdown(SHUT_WR)`` does
1055 not allow further reads on the other end of the connection).
Georg Brandl116aa622007-08-15 14:28:22 +00001056
Georg Brandl8569e582010-05-19 20:57:08 +00001057Note that there are no methods :meth:`read` or :meth:`write`; use
1058:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001059
1060Socket objects also have these (read-only) attributes that correspond to the
1061values given to the :class:`socket` constructor.
1062
1063
1064.. attribute:: socket.family
1065
1066 The socket family.
1067
Georg Brandl116aa622007-08-15 14:28:22 +00001068
1069.. attribute:: socket.type
1070
1071 The socket type.
1072
Georg Brandl116aa622007-08-15 14:28:22 +00001073
1074.. attribute:: socket.proto
1075
1076 The socket protocol.
1077
Georg Brandl116aa622007-08-15 14:28:22 +00001078
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001079
1080.. _socket-timeouts:
1081
1082Notes on socket timeouts
1083------------------------
1084
1085A socket object can be in one of three modes: blocking, non-blocking, or
1086timeout. Sockets are by default always created in blocking mode, but this
1087can be changed by calling :func:`setdefaulttimeout`.
1088
1089* In *blocking mode*, operations block until complete or the system returns
1090 an error (such as connection timed out).
1091
1092* In *non-blocking mode*, operations fail (with an error that is unfortunately
1093 system-dependent) if they cannot be completed immediately: functions from the
1094 :mod:`select` can be used to know when and whether a socket is available for
1095 reading or writing.
1096
1097* In *timeout mode*, operations fail if they cannot be completed within the
1098 timeout specified for the socket (they raise a :exc:`timeout` exception)
1099 or if the system returns an error.
1100
1101.. note::
1102 At the operating system level, sockets in *timeout mode* are internally set
1103 in non-blocking mode. Also, the blocking and timeout modes are shared between
1104 file descriptors and socket objects that refer to the same network endpoint.
1105 This implementation detail can have visible consequences if e.g. you decide
1106 to use the :meth:`~socket.fileno()` of a socket.
1107
1108Timeouts and the ``connect`` method
1109^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1110
1111The :meth:`~socket.connect` operation is also subject to the timeout
1112setting, and in general it is recommended to call :meth:`~socket.settimeout`
1113before calling :meth:`~socket.connect` or pass a timeout parameter to
1114:meth:`create_connection`. However, the system network stack may also
1115return a connection timeout error of its own regardless of any Python socket
1116timeout setting.
1117
1118Timeouts and the ``accept`` method
1119^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1120
1121If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1122the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1123behaviour depends on settings of the listening socket:
1124
1125* if the listening socket is in *blocking mode* or in *timeout mode*,
1126 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1127
1128* if the listening socket is in *non-blocking mode*, whether the socket
1129 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1130 is operating system-dependent. If you want to ensure cross-platform
1131 behaviour, it is recommended you manually override this setting.
1132
1133
Georg Brandl116aa622007-08-15 14:28:22 +00001134.. _socket-example:
1135
1136Example
1137-------
1138
1139Here are four minimal example programs using the TCP/IP protocol: a server that
1140echoes all data that it receives back (servicing only one client), and a client
1141using it. Note that a server must perform the sequence :func:`socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001142:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1143repeating the :meth:`~socket.accept` to service more than one client), while a
1144client only needs the sequence :func:`socket`, :meth:`~socket.connect`. Also
1145note that the server does not :meth:`~socket.send`/:meth:`~socket.recv` on the
1146socket it is listening on but on the new socket returned by
1147:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001148
1149The first two examples support IPv4 only. ::
1150
1151 # Echo server program
1152 import socket
1153
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001154 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001155 PORT = 50007 # Arbitrary non-privileged port
1156 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1157 s.bind((HOST, PORT))
1158 s.listen(1)
1159 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001160 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001161 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001162 data = conn.recv(1024)
1163 if not data: break
1164 conn.send(data)
1165 conn.close()
1166
1167::
1168
1169 # Echo client program
1170 import socket
1171
1172 HOST = 'daring.cwi.nl' # The remote host
1173 PORT = 50007 # The same port as used by the server
1174 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1175 s.connect((HOST, PORT))
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001176 s.send(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001177 data = s.recv(1024)
1178 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001179 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001180
1181The next two examples are identical to the above two, but support both IPv4 and
1182IPv6. The server side will listen to the first address family available (it
1183should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1184precedence and the server may not accept IPv4 traffic. The client side will try
1185to connect to the all addresses returned as a result of the name resolution, and
1186sends traffic to the first one connected successfully. ::
1187
1188 # Echo server program
1189 import socket
1190 import sys
1191
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001192 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001193 PORT = 50007 # Arbitrary non-privileged port
1194 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001195 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1196 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001197 af, socktype, proto, canonname, sa = res
1198 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001199 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001200 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001201 s = None
1202 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001203 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001204 s.bind(sa)
1205 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001206 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001207 s.close()
1208 s = None
1209 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001210 break
1211 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001212 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001213 sys.exit(1)
1214 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001215 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001216 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001217 data = conn.recv(1024)
1218 if not data: break
1219 conn.send(data)
1220 conn.close()
1221
1222::
1223
1224 # Echo client program
1225 import socket
1226 import sys
1227
1228 HOST = 'daring.cwi.nl' # The remote host
1229 PORT = 50007 # The same port as used by the server
1230 s = None
1231 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1232 af, socktype, proto, canonname, sa = res
1233 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001234 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001235 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001236 s = None
1237 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001238 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001239 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001240 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001241 s.close()
1242 s = None
1243 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001244 break
1245 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001246 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001247 sys.exit(1)
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001248 s.send(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001249 data = s.recv(1024)
1250 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001251 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001252
Georg Brandl48310cd2009-01-03 21:18:54 +00001253
Charles-François Natali47413c12011-10-06 19:47:44 +02001254The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001255sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001256the interface::
1257
1258 import socket
1259
1260 # the public network interface
1261 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001262
Christian Heimesfaf2f632008-01-06 16:59:19 +00001263 # create a raw socket and bind it to the public interface
1264 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1265 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001266
Christian Heimesfaf2f632008-01-06 16:59:19 +00001267 # Include IP headers
1268 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001269
Christian Heimesfaf2f632008-01-06 16:59:19 +00001270 # receive all packages
1271 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001272
Christian Heimesfaf2f632008-01-06 16:59:19 +00001273 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001274 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001275
Christian Heimesc3f30c42008-02-22 16:37:40 +00001276 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001277 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001278
Charles-François Natali47413c12011-10-06 19:47:44 +02001279The last example shows how to use the socket interface to communicate to a CAN
1280network. This example might require special priviledge::
1281
1282 import socket
1283 import struct
1284
1285
1286 # CAN frame packing/unpacking (see `struct can_frame` in <linux/can.h>)
1287
1288 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001289 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001290
1291 def build_can_frame(can_id, data):
1292 can_dlc = len(data)
1293 data = data.ljust(8, b'\x00')
1294 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1295
1296 def dissect_can_frame(frame):
1297 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1298 return (can_id, can_dlc, data[:can_dlc])
1299
1300
1301 # create a raw socket and bind it to the `vcan0` interface
1302 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1303 s.bind(('vcan0',))
1304
1305 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001306 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001307
1308 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1309
1310 try:
1311 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001312 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001313 print('Error sending CAN frame')
1314
1315 try:
1316 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001317 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001318 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001319
Sandro Tosi172f3742011-09-02 20:06:31 +02001320Running an example several times with too small delay between executions, could
1321lead to this error::
1322
Antoine Pitrou5574c302011-10-12 17:53:43 +02001323 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001324
1325This is because the previous execution has left the socket in a ``TIME_WAIT``
1326state, and can't be immediately reused.
1327
1328There is a :mod:`socket` flag to set, in order to prevent this,
1329:data:`socket.SO_REUSEADDR`::
1330
1331 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1332 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1333 s.bind((HOST, PORT))
1334
1335the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1336``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1337
1338
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001339.. seealso::
1340
1341 For an introduction to socket programming (in C), see the following papers:
1342
1343 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1344
1345 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1346 al,
1347
1348 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1349 PS1:7 and PS1:8). The platform-specific reference material for the various
1350 socket-related system calls are also a valuable source of information on the
1351 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1352 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1353 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.
1354