blob: 3a49eed09dc9aa025e07fee23a0cf108281a0485 [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
Ezio Melottic048d982013-04-17 04:10:26 +030021:func:`.socket` function returns a :dfn:`socket object` whose methods implement
Georg Brandl116aa622007-08-15 14:28:22 +000022the 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
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010043The address format required by a particular socket object is automatically
44selected based on the address family specified when the socket object was
45created. Socket addresses are represented as follows:
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000046
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010047- The address of an :const:`AF_UNIX` socket bound to a file system node
48 is represented as a string, using the file system encoding and the
49 ``'surrogateescape'`` error handler (see :pep:`383`). An address in
50 Linux's abstract namespace is returned as a :class:`bytes` object with
51 an initial null byte; note that sockets in this namespace can
52 communicate with normal file system sockets, so programs intended to
53 run on Linux may need to deal with both types of address. A string or
54 :class:`bytes` object can be used for either type of address when
55 passing it as an argument.
56
57 .. versionchanged:: 3.3
58 Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8
59 encoding.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000060
61- A pair ``(host, port)`` is used for the :const:`AF_INET` address family,
62 where *host* is a string representing either a hostname in Internet domain
63 notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``,
Sandro Tosi27b130e2012-06-14 00:37:09 +020064 and *port* is an integer.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000065
66- For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
67 scopeid)`` is used, where *flowinfo* and *scopeid* represent the ``sin6_flowinfo``
68 and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C. For
69 :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for
70 backward compatibility. Note, however, omission of *scopeid* can cause problems
71 in manipulating scoped IPv6 addresses.
72
73- :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``.
74
75- Linux-only support for TIPC is available using the :const:`AF_TIPC`
76 address family. TIPC is an open, non-IP based networked protocol designed
77 for use in clustered computer environments. Addresses are represented by a
78 tuple, and the fields depend on the address type. The general tuple form is
79 ``(addr_type, v1, v2, v3 [, scope])``, where:
80
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010081 - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`,
82 or :const:`TIPC_ADDR_ID`.
83 - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, and
84 :const:`TIPC_NODE_SCOPE`.
85 - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000086 the port identifier, and *v3* should be 0.
87
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010088 If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2*
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000089 is the lower port number, and *v3* is the upper port number.
90
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010091 If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000092 reference, and *v3* should be set to 0.
93
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010094 If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000095 reference, and *v3* should be set to 0.
96
Charles-François Natali47413c12011-10-06 19:47:44 +020097- A tuple ``(interface, )`` is used for the :const:`AF_CAN` address family,
98 where *interface* is a string representing a network interface name like
99 ``'can0'``. The network interface name ``''`` can be used to receive packets
100 from all network interfaces of this family.
101
Martin v. Löwis9d6c6692012-02-03 17:44:58 +0100102- A string or a tuple ``(id, unit)`` is used for the :const:`SYSPROTO_CONTROL`
103 protocol of the :const:`PF_SYSTEM` family. The string is the name of a
104 kernel control using a dynamically-assigned ID. The tuple can be used if ID
105 and unit number of the kernel control are known or if a registered ID is
106 used.
107
108 .. versionadded:: 3.3
109
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000110- Certain other address families (:const:`AF_BLUETOOTH`, :const:`AF_PACKET`)
111 support specific representations.
112
113 .. XXX document them!
Georg Brandl116aa622007-08-15 14:28:22 +0000114
115For IPv4 addresses, two special forms are accepted instead of a host address:
116the empty string represents :const:`INADDR_ANY`, and the string
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000117``'<broadcast>'`` represents :const:`INADDR_BROADCAST`. This behavior is not
118compatible with IPv6, therefore, you may want to avoid these if you intend
119to support IPv6 with your Python programs.
Georg Brandl116aa622007-08-15 14:28:22 +0000120
121If you use a hostname in the *host* portion of IPv4/v6 socket address, the
122program may show a nondeterministic behavior, as Python uses the first address
123returned from the DNS resolution. The socket address will be resolved
124differently into an actual IPv4/v6 address, depending on the results from DNS
125resolution and/or the host configuration. For deterministic behavior use a
126numeric address in *host* portion.
127
Georg Brandl116aa622007-08-15 14:28:22 +0000128All errors raise exceptions. The normal exceptions for invalid argument types
Antoine Pitrou5574c302011-10-12 17:53:43 +0200129and out-of-memory conditions can be raised; starting from Python 3.3, errors
130related to socket or address semantics raise :exc:`OSError` or one of its
131subclasses (they used to raise :exc:`socket.error`).
Georg Brandl116aa622007-08-15 14:28:22 +0000132
Georg Brandl8569e582010-05-19 20:57:08 +0000133Non-blocking mode is supported through :meth:`~socket.setblocking`. A
134generalization of this based on timeouts is supported through
135:meth:`~socket.settimeout`.
Georg Brandl116aa622007-08-15 14:28:22 +0000136
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000137
138Module contents
139---------------
140
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100141The module :mod:`socket` exports the following elements.
Georg Brandl116aa622007-08-15 14:28:22 +0000142
143
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100144Exceptions
145^^^^^^^^^^
146
Georg Brandl116aa622007-08-15 14:28:22 +0000147.. exception:: error
148
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200149 A deprecated alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000150
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200151 .. versionchanged:: 3.3
152 Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000153
154
155.. exception:: herror
156
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200157 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000158 address-related errors, i.e. for functions that use *h_errno* in the POSIX
159 C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
160 The accompanying value is a pair ``(h_errno, string)`` representing an
161 error returned by a library call. *h_errno* is a numeric value, while
162 *string* represents the description of *h_errno*, as returned by the
163 :c:func:`hstrerror` C function.
Georg Brandl116aa622007-08-15 14:28:22 +0000164
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200165 .. versionchanged:: 3.3
166 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000167
168.. exception:: gaierror
169
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200170 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000171 address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
172 The accompanying value is a pair ``(error, string)`` representing an error
173 returned by a library call. *string* represents the description of
174 *error*, as returned by the :c:func:`gai_strerror` C function. The
175 numeric *error* value will match one of the :const:`EAI_\*` constants
176 defined in this module.
Georg Brandl116aa622007-08-15 14:28:22 +0000177
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200178 .. versionchanged:: 3.3
179 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000180
181.. exception:: timeout
182
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200183 A subclass of :exc:`OSError`, this exception is raised when a timeout
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000184 occurs on a socket which has had timeouts enabled via a prior call to
185 :meth:`~socket.settimeout` (or implicitly through
186 :func:`~socket.setdefaulttimeout`). The accompanying value is a string
187 whose value is currently always "timed out".
Georg Brandl116aa622007-08-15 14:28:22 +0000188
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200189 .. versionchanged:: 3.3
190 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000191
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100192
193Constants
194^^^^^^^^^
195
Georg Brandl116aa622007-08-15 14:28:22 +0000196.. data:: AF_UNIX
197 AF_INET
198 AF_INET6
199
200 These constants represent the address (and protocol) families, used for the
Ezio Melottic048d982013-04-17 04:10:26 +0300201 first argument to :func:`.socket`. If the :const:`AF_UNIX` constant is not
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000202 defined then this protocol is unsupported. More constants may be available
203 depending on the system.
Georg Brandl116aa622007-08-15 14:28:22 +0000204
205
206.. data:: SOCK_STREAM
207 SOCK_DGRAM
208 SOCK_RAW
209 SOCK_RDM
210 SOCK_SEQPACKET
211
212 These constants represent the socket types, used for the second argument to
Ezio Melottic048d982013-04-17 04:10:26 +0300213 :func:`.socket`. More constants may be available depending on the system.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000214 (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
215 useful.)
Georg Brandl116aa622007-08-15 14:28:22 +0000216
Antoine Pitroub1c54962010-10-14 15:05:38 +0000217.. data:: SOCK_CLOEXEC
218 SOCK_NONBLOCK
219
220 These two constants, if defined, can be combined with the socket types and
221 allow you to set some flags atomically (thus avoiding possible race
222 conditions and the need for separate calls).
223
224 .. seealso::
225
226 `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
227 for a more thorough explanation.
228
229 Availability: Linux >= 2.6.27.
230
231 .. versionadded:: 3.2
Georg Brandl116aa622007-08-15 14:28:22 +0000232
233.. data:: SO_*
234 SOMAXCONN
235 MSG_*
236 SOL_*
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000237 SCM_*
Georg Brandl116aa622007-08-15 14:28:22 +0000238 IPPROTO_*
239 IPPORT_*
240 INADDR_*
241 IP_*
242 IPV6_*
243 EAI_*
244 AI_*
245 NI_*
246 TCP_*
247
248 Many constants of these forms, documented in the Unix documentation on sockets
249 and/or the IP protocol, are also defined in the socket module. They are
250 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
251 methods of socket objects. In most cases, only those symbols that are defined
252 in the Unix header files are defined; for a few symbols, default values are
253 provided.
254
Charles-François Natali47413c12011-10-06 19:47:44 +0200255.. data:: AF_CAN
256 PF_CAN
257 SOL_CAN_*
258 CAN_*
259
260 Many constants of these forms, documented in the Linux documentation, are
261 also defined in the socket module.
262
263 Availability: Linux >= 2.6.25.
264
265 .. versionadded:: 3.3
266
267
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100268.. data:: AF_RDS
269 PF_RDS
270 SOL_RDS
271 RDS_*
272
273 Many constants of these forms, documented in the Linux documentation, are
274 also defined in the socket module.
275
276 Availability: Linux >= 2.6.30.
277
278 .. versionadded:: 3.3
279
280
Christian Heimesfaf2f632008-01-06 16:59:19 +0000281.. data:: SIO_*
282 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000283
Christian Heimesfaf2f632008-01-06 16:59:19 +0000284 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300285 :meth:`~socket.socket.ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000286
Georg Brandl116aa622007-08-15 14:28:22 +0000287
Christian Heimes043d6f62008-01-07 17:19:16 +0000288.. data:: TIPC_*
289
290 TIPC related constants, matching the ones exported by the C socket API. See
291 the TIPC documentation for more information.
292
293
Georg Brandl116aa622007-08-15 14:28:22 +0000294.. data:: has_ipv6
295
296 This constant contains a boolean value which indicates if IPv6 is supported on
297 this platform.
298
Georg Brandl116aa622007-08-15 14:28:22 +0000299
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100300Functions
301^^^^^^^^^
302
303Creating sockets
304''''''''''''''''
305
306The following functions all create :ref:`socket objects <socket-objects>`.
307
308
309.. function:: socket([family[, type[, proto]]])
310
311 Create a new socket using the given address family, socket type and protocol
312 number. The address family should be :const:`AF_INET` (the default),
313 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
314 socket type should be :const:`SOCK_STREAM` (the default),
315 :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
316 constants. The protocol number is usually zero and may be omitted in that
317 case or :const:`CAN_RAW` in case the address family is :const:`AF_CAN`.
318
319 .. versionchanged:: 3.3
320 The AF_CAN family was added.
321 The AF_RDS family was added.
322
323
324.. function:: socketpair([family[, type[, proto]]])
325
326 Build a pair of connected socket objects using the given address family, socket
327 type, and protocol number. Address family, socket type, and protocol number are
328 as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
329 if defined on the platform; otherwise, the default is :const:`AF_INET`.
330 Availability: Unix.
331
332 .. versionchanged:: 3.2
333 The returned socket objects now support the whole socket API, rather
334 than a subset.
335
336
Gregory P. Smithb4066372010-01-03 03:28:29 +0000337.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000338
Antoine Pitrou889a5102012-01-12 08:06:19 +0100339 Connect to a TCP service listening on the Internet *address* (a 2-tuple
340 ``(host, port)``), and return the socket object. This is a higher-level
341 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
342 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
343 and then try to connect to all possible addresses in turn until a
344 connection succeeds. This makes it easy to write clients that are
345 compatible to both IPv4 and IPv6.
346
347 Passing the optional *timeout* parameter will set the timeout on the
348 socket instance before attempting to connect. If no *timeout* is
349 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000350 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000351
Gregory P. Smithb4066372010-01-03 03:28:29 +0000352 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
353 socket to bind to as its source address before connecting. If host or port
354 are '' or 0 respectively the OS default behavior will be used.
355
356 .. versionchanged:: 3.2
357 *source_address* was added.
358
Giampaolo Rodolàb383dbb2010-09-08 22:44:12 +0000359 .. versionchanged:: 3.2
360 support for the :keyword:`with` statement was added.
361
Georg Brandl116aa622007-08-15 14:28:22 +0000362
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100363.. function:: fromfd(fd, family, type[, proto])
364
365 Duplicate the file descriptor *fd* (an integer as returned by a file object's
366 :meth:`fileno` method) and build a socket object from the result. Address
367 family, socket type and protocol number are as for the :func:`.socket` function
368 above. The file descriptor should refer to a socket, but this is not checked ---
369 subsequent operations on the object may fail if the file descriptor is invalid.
370 This function is rarely needed, but can be used to get or set socket options on
371 a socket passed to a program as standard input or output (such as a server
372 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
373
374
375.. function:: fromshare(data)
376
377 Instantiate a socket from data obtained from the :meth:`socket.share`
378 method. The socket is assumed to be in blocking mode.
379
380 Availability: Windows.
381
382 .. versionadded:: 3.3
383
384
385.. data:: SocketType
386
387 This is a Python type object that represents the socket object type. It is the
388 same as ``type(socket(...))``.
389
390
391Other functions
392'''''''''''''''
393
394The :mod:`socket` module also offers various network-related services:
395
396
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000397.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000398
Antoine Pitrou91035972010-05-31 17:04:40 +0000399 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
400 all the necessary arguments for creating a socket connected to that service.
401 *host* is a domain name, a string representation of an IPv4/v6 address
402 or ``None``. *port* is a string service name such as ``'http'``, a numeric
403 port number or ``None``. By passing ``None`` as the value of *host*
404 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000405
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000406 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000407 in order to narrow the list of addresses returned. Passing zero as a
408 value for each of these arguments selects the full range of results.
409 The *flags* argument can be one or several of the ``AI_*`` constants,
410 and will influence how results are computed and returned.
411 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
412 and will raise an error if *host* is a domain name.
413
414 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000415
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000416 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000417
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000418 In these tuples, *family*, *type*, *proto* are all integers and are
Ezio Melottic048d982013-04-17 04:10:26 +0300419 meant to be passed to the :func:`.socket` function. *canonname* will be
Antoine Pitrou91035972010-05-31 17:04:40 +0000420 a string representing the canonical name of the *host* if
421 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
422 will be empty. *sockaddr* is a tuple describing a socket address, whose
423 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
424 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
425 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
426 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000427
Antoine Pitrou91035972010-05-31 17:04:40 +0000428 The following example fetches address information for a hypothetical TCP
429 connection to ``www.python.org`` on port 80 (results may differ on your
430 system if IPv6 isn't enabled)::
431
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000432 >>> socket.getaddrinfo("www.python.org", 80, proto=socket.SOL_TCP)
Antoine Pitrou91035972010-05-31 17:04:40 +0000433 [(2, 1, 6, '', ('82.94.164.162', 80)),
434 (10, 1, 6, '', ('2001:888:2000:d::a2', 80, 0, 0))]
Georg Brandl116aa622007-08-15 14:28:22 +0000435
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000436 .. versionchanged:: 3.2
Andrew Kuchling46ff4ee2014-02-15 16:39:37 -0500437 parameters can now be passed using keyword arguments.
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000438
Georg Brandl116aa622007-08-15 14:28:22 +0000439.. function:: getfqdn([name])
440
441 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
442 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000443 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000444 host, if available. The first name which includes a period is selected. In
445 case no fully qualified domain name is available, the hostname as returned by
446 :func:`gethostname` is returned.
447
Georg Brandl116aa622007-08-15 14:28:22 +0000448
449.. function:: gethostbyname(hostname)
450
451 Translate a host name to IPv4 address format. The IPv4 address is returned as a
452 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
453 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
454 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
455 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
456
457
458.. function:: gethostbyname_ex(hostname)
459
460 Translate a host name to IPv4 address format, extended interface. Return a
461 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
462 host name responding to the given *ip_address*, *aliaslist* is a (possibly
463 empty) list of alternative host names for the same address, and *ipaddrlist* is
464 a list of IPv4 addresses for the same interface on the same host (often but not
465 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
466 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
467 stack support.
468
469
470.. function:: gethostname()
471
472 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000473 interpreter is currently executing.
474
475 If you want to know the current machine's IP address, you may want to use
476 ``gethostbyname(gethostname())``. This operation assumes that there is a
477 valid address-to-host mapping for the host, and the assumption does not
478 always hold.
479
480 Note: :func:`gethostname` doesn't always return the fully qualified domain
481 name; use ``getfqdn()`` (see above).
Georg Brandl116aa622007-08-15 14:28:22 +0000482
483
484.. function:: gethostbyaddr(ip_address)
485
486 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
487 primary host name responding to the given *ip_address*, *aliaslist* is a
488 (possibly empty) list of alternative host names for the same address, and
489 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
490 host (most likely containing only a single address). To find the fully qualified
491 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
492 both IPv4 and IPv6.
493
494
495.. function:: getnameinfo(sockaddr, flags)
496
497 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
498 on the settings of *flags*, the result can contain a fully-qualified domain name
499 or numeric address representation in *host*. Similarly, *port* can contain a
500 string port name or a numeric port number.
501
Georg Brandl116aa622007-08-15 14:28:22 +0000502
503.. function:: getprotobyname(protocolname)
504
505 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
Ezio Melottic048d982013-04-17 04:10:26 +0300506 suitable for passing as the (optional) third argument to the :func:`.socket`
Georg Brandl116aa622007-08-15 14:28:22 +0000507 function. This is usually only needed for sockets opened in "raw" mode
508 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
509 automatically if the protocol is omitted or zero.
510
511
512.. function:: getservbyname(servicename[, protocolname])
513
514 Translate an Internet service name and protocol name to a port number for that
515 service. The optional protocol name, if given, should be ``'tcp'`` or
516 ``'udp'``, otherwise any protocol will match.
517
518
519.. function:: getservbyport(port[, protocolname])
520
521 Translate an Internet port number and protocol name to a service name for that
522 service. The optional protocol name, if given, should be ``'tcp'`` or
523 ``'udp'``, otherwise any protocol will match.
524
525
Georg Brandl116aa622007-08-15 14:28:22 +0000526.. function:: ntohl(x)
527
528 Convert 32-bit positive integers from network to host byte order. On machines
529 where the host byte order is the same as network byte order, this is a no-op;
530 otherwise, it performs a 4-byte swap operation.
531
532
533.. function:: ntohs(x)
534
535 Convert 16-bit positive integers from network to host byte order. On machines
536 where the host byte order is the same as network byte order, this is a no-op;
537 otherwise, it performs a 2-byte swap operation.
538
539
540.. function:: htonl(x)
541
542 Convert 32-bit positive integers from host to network byte order. On machines
543 where the host byte order is the same as network byte order, this is a no-op;
544 otherwise, it performs a 4-byte swap operation.
545
546
547.. function:: htons(x)
548
549 Convert 16-bit positive integers from host to network byte order. On machines
550 where the host byte order is the same as network byte order, this is a no-op;
551 otherwise, it performs a 2-byte swap operation.
552
553
554.. function:: inet_aton(ip_string)
555
556 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000557 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000558 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000559 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000560 for the 32-bit packed binary this function returns.
561
Georg Brandlf5123ef2009-06-04 10:28:36 +0000562 :func:`inet_aton` also accepts strings with less than three dots; see the
563 Unix manual page :manpage:`inet(3)` for details.
564
Georg Brandl116aa622007-08-15 14:28:22 +0000565 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200566 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000567 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000568
Georg Brandl5f259722009-05-04 20:50:30 +0000569 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000570 instead for IPv4/v6 dual stack support.
571
572
573.. function:: inet_ntoa(packed_ip)
574
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000575 Convert a 32-bit packed IPv4 address (a bytes object four characters in
576 length) to its standard dotted-quad string representation (for example,
577 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000578 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000579 is the C type for the 32-bit packed binary data this function takes as an
580 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000581
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000582 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200583 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000584 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000585 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000586
587
588.. function:: inet_pton(address_family, ip_string)
589
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000590 Convert an IP address from its family-specific string format to a packed,
591 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000592 calls for an object of type :c:type:`struct in_addr` (similar to
593 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000594
595 Supported values for *address_family* are currently :const:`AF_INET` and
596 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200597 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000598 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000599 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000600
601 Availability: Unix (maybe not all platforms).
602
Georg Brandl116aa622007-08-15 14:28:22 +0000603
604.. function:: inet_ntop(address_family, packed_ip)
605
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000606 Convert a packed IP address (a bytes object of some number of characters) to its
Georg Brandl116aa622007-08-15 14:28:22 +0000607 standard, family-specific string representation (for example, ``'7.10.0.5'`` or
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000608 ``'5aef:2b::8'``). :func:`inet_ntop` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000609 returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`)
610 or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000611
612 Supported values for *address_family* are currently :const:`AF_INET` and
613 :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the
614 specified address family, :exc:`ValueError` will be raised. A
Antoine Pitrou5574c302011-10-12 17:53:43 +0200615 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000616
617 Availability: Unix (maybe not all platforms).
618
Georg Brandl116aa622007-08-15 14:28:22 +0000619
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000620..
621 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
622 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
623 interface, in which struct msghdr has no msg_control or
624 msg_controllen members, is not currently supported.
625
626.. function:: CMSG_LEN(length)
627
628 Return the total length, without trailing padding, of an ancillary
629 data item with associated data of the given *length*. This value
630 can often be used as the buffer size for :meth:`~socket.recvmsg` to
631 receive a single item of ancillary data, but :rfc:`3542` requires
632 portable applications to use :func:`CMSG_SPACE` and thus include
633 space for padding, even when the item will be the last in the
634 buffer. Raises :exc:`OverflowError` if *length* is outside the
635 permissible range of values.
636
637 Availability: most Unix platforms, possibly others.
638
639 .. versionadded:: 3.3
640
641
642.. function:: CMSG_SPACE(length)
643
644 Return the buffer size needed for :meth:`~socket.recvmsg` to
645 receive an ancillary data item with associated data of the given
646 *length*, along with any trailing padding. The buffer space needed
647 to receive multiple items is the sum of the :func:`CMSG_SPACE`
648 values for their associated data lengths. Raises
649 :exc:`OverflowError` if *length* is outside the permissible range
650 of values.
651
652 Note that some systems might support ancillary data without
653 providing this function. Also note that setting the buffer size
654 using the results of this function may not precisely limit the
655 amount of ancillary data that can be received, since additional
656 data may be able to fit into the padding area.
657
658 Availability: most Unix platforms, possibly others.
659
660 .. versionadded:: 3.3
661
662
Georg Brandl116aa622007-08-15 14:28:22 +0000663.. function:: getdefaulttimeout()
664
Ezio Melotti388c9452011-08-14 08:28:57 +0300665 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000666 of ``None`` indicates that new socket objects have no timeout. When the socket
667 module is first imported, the default is ``None``.
668
Georg Brandl116aa622007-08-15 14:28:22 +0000669
670.. function:: setdefaulttimeout(timeout)
671
Ezio Melotti388c9452011-08-14 08:28:57 +0300672 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000673 the socket module is first imported, the default is ``None``. See
674 :meth:`~socket.settimeout` for possible values and their respective
675 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000676
Georg Brandl116aa622007-08-15 14:28:22 +0000677
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000678.. function:: sethostname(name)
679
680 Set the machine's hostname to *name*. This will raise a
Antoine Pitrou5574c302011-10-12 17:53:43 +0200681 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000682
683 Availability: Unix.
684
685 .. versionadded:: 3.3
686
687
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700688.. function:: if_nameindex()
689
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700690 Return a list of network interface information
691 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200692 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700693
694 Availability: Unix.
695
696 .. versionadded:: 3.3
697
698
699.. function:: if_nametoindex(if_name)
700
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700701 Return a network interface index number corresponding to an
702 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200703 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700704
705 Availability: Unix.
706
707 .. versionadded:: 3.3
708
709
710.. function:: if_indextoname(if_index)
711
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700712 Return a network interface name corresponding to a
713 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200714 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700715
716 Availability: Unix.
717
718 .. versionadded:: 3.3
719
720
Georg Brandl116aa622007-08-15 14:28:22 +0000721.. _socket-objects:
722
723Socket Objects
724--------------
725
Antoine Pitroue3658a72013-12-04 21:02:42 +0100726Socket objects have the following methods. Except for
727:meth:`~socket.makefile`, these correspond to Unix system calls applicable
728to sockets.
Georg Brandl116aa622007-08-15 14:28:22 +0000729
730
731.. method:: socket.accept()
732
733 Accept a connection. The socket must be bound to an address and listening for
734 connections. The return value is a pair ``(conn, address)`` where *conn* is a
735 *new* socket object usable to send and receive data on the connection, and
736 *address* is the address bound to the socket on the other end of the connection.
737
738
739.. method:: socket.bind(address)
740
741 Bind the socket to *address*. The socket must not already be bound. (The format
742 of *address* depends on the address family --- see above.)
743
Georg Brandl116aa622007-08-15 14:28:22 +0000744
745.. method:: socket.close()
746
Antoine Pitroue3658a72013-12-04 21:02:42 +0100747 Mark the socket closed. The underlying system resource (e.g. a file
748 descriptor) is also closed when all file objects from :meth:`makefile()`
749 are closed. Once that happens, all future operations on the socket
750 object will fail. The remote end will receive no more data (after
751 queued data is flushed).
752
753 Sockets are automatically closed when they are garbage-collected, but
754 it is recommended to :meth:`close` them explicitly, or to use a
755 :keyword:`with` statement around them.
Georg Brandl116aa622007-08-15 14:28:22 +0000756
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000757 .. note::
Éric Araujofa5e6e42014-03-12 19:51:00 -0400758
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000759 :meth:`close()` releases the resource associated with a connection but
760 does not necessarily close the connection immediately. If you want
761 to close the connection in a timely fashion, call :meth:`shutdown()`
762 before :meth:`close()`.
763
Georg Brandl116aa622007-08-15 14:28:22 +0000764
765.. method:: socket.connect(address)
766
767 Connect to a remote socket at *address*. (The format of *address* depends on the
768 address family --- see above.)
769
Georg Brandl116aa622007-08-15 14:28:22 +0000770
771.. method:: socket.connect_ex(address)
772
773 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +0000774 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +0000775 problems, such as "host not found," can still raise exceptions). The error
776 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +0000777 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +0000778 connects.
779
Georg Brandl116aa622007-08-15 14:28:22 +0000780
Antoine Pitrou6e451df2010-08-09 20:39:54 +0000781.. method:: socket.detach()
782
783 Put the socket object into closed state without actually closing the
784 underlying file descriptor. The file descriptor is returned, and can
785 be reused for other purposes.
786
787 .. versionadded:: 3.2
788
789
Georg Brandl116aa622007-08-15 14:28:22 +0000790.. method:: socket.fileno()
791
792 Return the socket's file descriptor (a small integer). This is useful with
793 :func:`select.select`.
794
795 Under Windows the small integer returned by this method cannot be used where a
796 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
797 this limitation.
798
799
800.. method:: socket.getpeername()
801
802 Return the remote address to which the socket is connected. This is useful to
803 find out the port number of a remote IPv4/v6 socket, for instance. (The format
804 of the address returned depends on the address family --- see above.) On some
805 systems this function is not supported.
806
807
808.. method:: socket.getsockname()
809
810 Return the socket's own address. This is useful to find out the port number of
811 an IPv4/v6 socket, for instance. (The format of the address returned depends on
812 the address family --- see above.)
813
814
815.. method:: socket.getsockopt(level, optname[, buflen])
816
817 Return the value of the given socket option (see the Unix man page
818 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
819 are defined in this module. If *buflen* is absent, an integer option is assumed
820 and its integer value is returned by the function. If *buflen* is present, it
821 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000822 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +0000823 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000824 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +0000825
Georg Brandl48310cd2009-01-03 21:18:54 +0000826
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000827.. method:: socket.gettimeout()
828
Ezio Melotti388c9452011-08-14 08:28:57 +0300829 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000830 or ``None`` if no timeout is set. This reflects the last call to
831 :meth:`setblocking` or :meth:`settimeout`.
832
833
Christian Heimesfaf2f632008-01-06 16:59:19 +0000834.. method:: socket.ioctl(control, option)
835
Georg Brandl48310cd2009-01-03 21:18:54 +0000836 :platform: Windows
837
Christian Heimes679db4a2008-01-18 09:56:22 +0000838 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +0000839 interface. Please refer to the `Win32 documentation
840 <http://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
841 information.
Georg Brandl48310cd2009-01-03 21:18:54 +0000842
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000843 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
844 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000845
846.. method:: socket.listen(backlog)
847
848 Listen for connections made to the socket. The *backlog* argument specifies the
Antoine Pitrou1be815a2011-05-10 19:16:29 +0200849 maximum number of queued connections and should be at least 0; the maximum value
850 is system-dependent (usually 5), the minimum value is forced to 0.
Georg Brandl116aa622007-08-15 14:28:22 +0000851
852
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000853.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
854 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000855
856 .. index:: single: I/O control; buffering
857
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000858 Return a :term:`file object` associated with the socket. The exact returned
859 type depends on the arguments given to :meth:`makefile`. These arguments are
860 interpreted the same way as by the built-in :func:`open` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000861
Antoine Pitroue3658a72013-12-04 21:02:42 +0100862 The socket must be in blocking mode; it can have a timeout, but the file
863 object's internal buffer may end up in a inconsistent state if a timeout
864 occurs.
865
866 Closing the file object returned by :meth:`makefile` won't close the
867 original socket unless all other file objects have been closed and
868 :meth:`socket.close` has been called on the socket object.
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000869
870 .. note::
871
872 On Windows, the file-like object created by :meth:`makefile` cannot be
873 used where a file object with a file descriptor is expected, such as the
874 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000875
Georg Brandl116aa622007-08-15 14:28:22 +0000876
877.. method:: socket.recv(bufsize[, flags])
878
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000879 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +0000880 data received. The maximum amount of data to be received at once is specified
881 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
882 the optional argument *flags*; it defaults to zero.
883
884 .. note::
885
886 For best match with hardware and network realities, the value of *bufsize*
887 should be a relatively small power of 2, for example, 4096.
888
889
890.. method:: socket.recvfrom(bufsize[, flags])
891
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000892 Receive data from the socket. The return value is a pair ``(bytes, address)``
893 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +0000894 address of the socket sending the data. See the Unix manual page
895 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
896 to zero. (The format of *address* depends on the address family --- see above.)
897
898
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000899.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
900
901 Receive normal data (up to *bufsize* bytes) and ancillary data from
902 the socket. The *ancbufsize* argument sets the size in bytes of
903 the internal buffer used to receive the ancillary data; it defaults
904 to 0, meaning that no ancillary data will be received. Appropriate
905 buffer sizes for ancillary data can be calculated using
906 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
907 into the buffer might be truncated or discarded. The *flags*
908 argument defaults to 0 and has the same meaning as for
909 :meth:`recv`.
910
911 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
912 address)``. The *data* item is a :class:`bytes` object holding the
913 non-ancillary data received. The *ancdata* item is a list of zero
914 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
915 the ancillary data (control messages) received: *cmsg_level* and
916 *cmsg_type* are integers specifying the protocol level and
917 protocol-specific type respectively, and *cmsg_data* is a
918 :class:`bytes` object holding the associated data. The *msg_flags*
919 item is the bitwise OR of various flags indicating conditions on
920 the received message; see your system documentation for details.
921 If the receiving socket is unconnected, *address* is the address of
922 the sending socket, if available; otherwise, its value is
923 unspecified.
924
925 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
926 pass file descriptors between processes over an :const:`AF_UNIX`
927 socket. When this facility is used (it is often restricted to
928 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
929 ancillary data, items of the form ``(socket.SOL_SOCKET,
930 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
931 representing the new file descriptors as a binary array of the
932 native C :c:type:`int` type. If :meth:`recvmsg` raises an
933 exception after the system call returns, it will first attempt to
934 close any file descriptors received via this mechanism.
935
936 Some systems do not indicate the truncated length of ancillary data
937 items which have been only partially received. If an item appears
938 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
939 a :exc:`RuntimeWarning`, and will return the part of it which is
940 inside the buffer provided it has not been truncated before the
941 start of its associated data.
942
943 On systems which support the :const:`SCM_RIGHTS` mechanism, the
944 following function will receive up to *maxfds* file descriptors,
945 returning the message data and a list containing the descriptors
946 (while ignoring unexpected conditions such as unrelated control
947 messages being received). See also :meth:`sendmsg`. ::
948
949 import socket, array
950
951 def recv_fds(sock, msglen, maxfds):
952 fds = array.array("i") # Array of ints
953 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
954 for cmsg_level, cmsg_type, cmsg_data in ancdata:
955 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
956 # Append data, ignoring any truncated integers at the end.
957 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
958 return msg, list(fds)
959
960 Availability: most Unix platforms, possibly others.
961
962 .. versionadded:: 3.3
963
964
965.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
966
967 Receive normal data and ancillary data from the socket, behaving as
968 :meth:`recvmsg` would, but scatter the non-ancillary data into a
969 series of buffers instead of returning a new bytes object. The
970 *buffers* argument must be an iterable of objects that export
971 writable buffers (e.g. :class:`bytearray` objects); these will be
972 filled with successive chunks of the non-ancillary data until it
973 has all been written or there are no more buffers. The operating
974 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
975 on the number of buffers that can be used. The *ancbufsize* and
976 *flags* arguments have the same meaning as for :meth:`recvmsg`.
977
978 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
979 address)``, where *nbytes* is the total number of bytes of
980 non-ancillary data written into the buffers, and *ancdata*,
981 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
982
983 Example::
984
985 >>> import socket
986 >>> s1, s2 = socket.socketpair()
987 >>> b1 = bytearray(b'----')
988 >>> b2 = bytearray(b'0123456789')
989 >>> b3 = bytearray(b'--------------')
990 >>> s1.send(b'Mary had a little lamb')
991 22
992 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
993 (22, [], 0, None)
994 >>> [b1, b2, b3]
995 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
996
997 Availability: most Unix platforms, possibly others.
998
999 .. versionadded:: 3.3
1000
1001
Georg Brandl116aa622007-08-15 14:28:22 +00001002.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1003
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001004 Receive data from the socket, writing it into *buffer* instead of creating a
1005 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +00001006 the number of bytes received and *address* is the address of the socket sending
1007 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
1008 optional argument *flags*; it defaults to zero. (The format of *address*
1009 depends on the address family --- see above.)
1010
Georg Brandl116aa622007-08-15 14:28:22 +00001011
1012.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1013
1014 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001015 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +00001016 receive up to the size available in the given buffer. Returns the number of
1017 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
1018 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001019
Georg Brandl116aa622007-08-15 14:28:22 +00001020
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001021.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001022
1023 Send data to the socket. The socket must be connected to a remote socket. The
1024 optional *flags* argument has the same meaning as for :meth:`recv` above.
1025 Returns the number of bytes sent. Applications are responsible for checking that
1026 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001027 application needs to attempt delivery of the remaining data. For further
1028 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +00001029
1030
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001031.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001032
1033 Send data to the socket. The socket must be connected to a remote socket. The
1034 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001035 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001036 either all data has been sent or an error occurs. ``None`` is returned on
1037 success. On error, an exception is raised, and there is no way to determine how
1038 much data, if any, was successfully sent.
1039
1040
Ezio Melottie0add762012-09-14 06:32:35 +03001041.. method:: socket.sendto(bytes, address)
1042 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001043
1044 Send data to the socket. The socket should not be connected to a remote socket,
1045 since the destination socket is specified by *address*. The optional *flags*
1046 argument has the same meaning as for :meth:`recv` above. Return the number of
1047 bytes sent. (The format of *address* depends on the address family --- see
1048 above.)
1049
1050
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001051.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1052
1053 Send normal and ancillary data to the socket, gathering the
1054 non-ancillary data from a series of buffers and concatenating it
1055 into a single message. The *buffers* argument specifies the
1056 non-ancillary data as an iterable of buffer-compatible objects
1057 (e.g. :class:`bytes` objects); the operating system may set a limit
1058 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1059 that can be used. The *ancdata* argument specifies the ancillary
1060 data (control messages) as an iterable of zero or more tuples
1061 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1062 *cmsg_type* are integers specifying the protocol level and
1063 protocol-specific type respectively, and *cmsg_data* is a
1064 buffer-compatible object holding the associated data. Note that
1065 some systems (in particular, systems without :func:`CMSG_SPACE`)
1066 might support sending only one control message per call. The
1067 *flags* argument defaults to 0 and has the same meaning as for
1068 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1069 destination address for the message. The return value is the
1070 number of bytes of non-ancillary data sent.
1071
1072 The following function sends the list of file descriptors *fds*
1073 over an :const:`AF_UNIX` socket, on systems which support the
1074 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1075
1076 import socket, array
1077
1078 def send_fds(sock, msg, fds):
1079 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1080
1081 Availability: most Unix platforms, possibly others.
1082
1083 .. versionadded:: 3.3
1084
1085
Georg Brandl116aa622007-08-15 14:28:22 +00001086.. method:: socket.setblocking(flag)
1087
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001088 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1089 socket is set to non-blocking, else to blocking mode.
1090
1091 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1092
1093 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1094
1095 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001096
1097
1098.. method:: socket.settimeout(value)
1099
1100 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001101 nonnegative floating point number expressing seconds, or ``None``.
1102 If a non-zero value is given, subsequent socket operations will raise a
1103 :exc:`timeout` exception if the timeout period *value* has elapsed before
1104 the operation has completed. If zero is given, the socket is put in
1105 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001106
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001107 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001108
1109
1110.. method:: socket.setsockopt(level, optname, value)
1111
1112 .. index:: module: struct
1113
1114 Set the value of the given socket option (see the Unix manual page
1115 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
1116 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001117 bytes object representing a buffer. In the latter case it is up to the caller to
1118 ensure that the bytestring contains the proper bits (see the optional built-in
1119 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001120
1121
1122.. method:: socket.shutdown(how)
1123
1124 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1125 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1126 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001127 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001128
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001129
1130.. method:: socket.share(process_id)
1131
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001132 Duplicate a socket and prepare it for sharing with a target process. The
1133 target process must be provided with *process_id*. The resulting bytes object
1134 can then be passed to the target process using some form of interprocess
1135 communication and the socket can be recreated there using :func:`fromshare`.
1136 Once this method has been called, it is safe to close the socket since
1137 the operating system has already duplicated it for the target process.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001138
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001139 Availability: Windows.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001140
1141 .. versionadded:: 3.3
1142
1143
Georg Brandl8569e582010-05-19 20:57:08 +00001144Note that there are no methods :meth:`read` or :meth:`write`; use
1145:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001146
1147Socket objects also have these (read-only) attributes that correspond to the
1148values given to the :class:`socket` constructor.
1149
1150
1151.. attribute:: socket.family
1152
1153 The socket family.
1154
Georg Brandl116aa622007-08-15 14:28:22 +00001155
1156.. attribute:: socket.type
1157
1158 The socket type.
1159
Georg Brandl116aa622007-08-15 14:28:22 +00001160
1161.. attribute:: socket.proto
1162
1163 The socket protocol.
1164
Georg Brandl116aa622007-08-15 14:28:22 +00001165
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001166
1167.. _socket-timeouts:
1168
1169Notes on socket timeouts
1170------------------------
1171
1172A socket object can be in one of three modes: blocking, non-blocking, or
1173timeout. Sockets are by default always created in blocking mode, but this
1174can be changed by calling :func:`setdefaulttimeout`.
1175
1176* In *blocking mode*, operations block until complete or the system returns
1177 an error (such as connection timed out).
1178
1179* In *non-blocking mode*, operations fail (with an error that is unfortunately
1180 system-dependent) if they cannot be completed immediately: functions from the
1181 :mod:`select` can be used to know when and whether a socket is available for
1182 reading or writing.
1183
1184* In *timeout mode*, operations fail if they cannot be completed within the
1185 timeout specified for the socket (they raise a :exc:`timeout` exception)
1186 or if the system returns an error.
1187
1188.. note::
1189 At the operating system level, sockets in *timeout mode* are internally set
1190 in non-blocking mode. Also, the blocking and timeout modes are shared between
1191 file descriptors and socket objects that refer to the same network endpoint.
1192 This implementation detail can have visible consequences if e.g. you decide
1193 to use the :meth:`~socket.fileno()` of a socket.
1194
1195Timeouts and the ``connect`` method
1196^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1197
1198The :meth:`~socket.connect` operation is also subject to the timeout
1199setting, and in general it is recommended to call :meth:`~socket.settimeout`
1200before calling :meth:`~socket.connect` or pass a timeout parameter to
1201:meth:`create_connection`. However, the system network stack may also
1202return a connection timeout error of its own regardless of any Python socket
1203timeout setting.
1204
1205Timeouts and the ``accept`` method
1206^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1207
1208If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1209the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1210behaviour depends on settings of the listening socket:
1211
1212* if the listening socket is in *blocking mode* or in *timeout mode*,
1213 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1214
1215* if the listening socket is in *non-blocking mode*, whether the socket
1216 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1217 is operating system-dependent. If you want to ensure cross-platform
1218 behaviour, it is recommended you manually override this setting.
1219
1220
Georg Brandl116aa622007-08-15 14:28:22 +00001221.. _socket-example:
1222
1223Example
1224-------
1225
1226Here are four minimal example programs using the TCP/IP protocol: a server that
1227echoes all data that it receives back (servicing only one client), and a client
Ezio Melottic048d982013-04-17 04:10:26 +03001228using it. Note that a server must perform the sequence :func:`.socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001229:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1230repeating the :meth:`~socket.accept` to service more than one client), while a
Ezio Melottic048d982013-04-17 04:10:26 +03001231client only needs the sequence :func:`.socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001232note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1233the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001234:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001235
1236The first two examples support IPv4 only. ::
1237
1238 # Echo server program
1239 import socket
1240
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001241 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001242 PORT = 50007 # Arbitrary non-privileged port
1243 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1244 s.bind((HOST, PORT))
1245 s.listen(1)
1246 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001247 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001248 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001249 data = conn.recv(1024)
1250 if not data: break
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001251 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001252 conn.close()
1253
1254::
1255
1256 # Echo client program
1257 import socket
1258
1259 HOST = 'daring.cwi.nl' # The remote host
1260 PORT = 50007 # The same port as used by the server
1261 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1262 s.connect((HOST, PORT))
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001263 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001264 data = s.recv(1024)
1265 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001266 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001267
1268The next two examples are identical to the above two, but support both IPv4 and
1269IPv6. The server side will listen to the first address family available (it
1270should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1271precedence and the server may not accept IPv4 traffic. The client side will try
1272to connect to the all addresses returned as a result of the name resolution, and
1273sends traffic to the first one connected successfully. ::
1274
1275 # Echo server program
1276 import socket
1277 import sys
1278
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001279 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001280 PORT = 50007 # Arbitrary non-privileged port
1281 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001282 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1283 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001284 af, socktype, proto, canonname, sa = res
1285 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001286 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001287 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001288 s = None
1289 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001290 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001291 s.bind(sa)
1292 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001293 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001294 s.close()
1295 s = None
1296 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001297 break
1298 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001299 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001300 sys.exit(1)
1301 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001302 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001303 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001304 data = conn.recv(1024)
1305 if not data: break
1306 conn.send(data)
1307 conn.close()
1308
1309::
1310
1311 # Echo client program
1312 import socket
1313 import sys
1314
1315 HOST = 'daring.cwi.nl' # The remote host
1316 PORT = 50007 # The same port as used by the server
1317 s = None
1318 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1319 af, socktype, proto, canonname, sa = res
1320 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001321 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001322 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001323 s = None
1324 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001325 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001326 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001327 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001328 s.close()
1329 s = None
1330 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001331 break
1332 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001333 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001334 sys.exit(1)
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001335 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001336 data = s.recv(1024)
1337 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001338 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001339
Georg Brandl48310cd2009-01-03 21:18:54 +00001340
Charles-François Natali47413c12011-10-06 19:47:44 +02001341The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001342sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001343the interface::
1344
1345 import socket
1346
1347 # the public network interface
1348 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001349
Christian Heimesfaf2f632008-01-06 16:59:19 +00001350 # create a raw socket and bind it to the public interface
1351 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1352 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001353
Christian Heimesfaf2f632008-01-06 16:59:19 +00001354 # Include IP headers
1355 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001356
Christian Heimesfaf2f632008-01-06 16:59:19 +00001357 # receive all packages
1358 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001359
Christian Heimesfaf2f632008-01-06 16:59:19 +00001360 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001361 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001362
Christian Heimesc3f30c42008-02-22 16:37:40 +00001363 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001364 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001365
Charles-François Natali47413c12011-10-06 19:47:44 +02001366The last example shows how to use the socket interface to communicate to a CAN
1367network. This example might require special priviledge::
1368
1369 import socket
1370 import struct
1371
1372
Georg Brandla673eb82012-03-04 16:17:05 +01001373 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02001374
1375 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001376 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001377
1378 def build_can_frame(can_id, data):
1379 can_dlc = len(data)
1380 data = data.ljust(8, b'\x00')
1381 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1382
1383 def dissect_can_frame(frame):
1384 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1385 return (can_id, can_dlc, data[:can_dlc])
1386
1387
Georg Brandla673eb82012-03-04 16:17:05 +01001388 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02001389 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1390 s.bind(('vcan0',))
1391
1392 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001393 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001394
1395 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1396
1397 try:
1398 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001399 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001400 print('Error sending CAN frame')
1401
1402 try:
1403 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001404 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001405 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001406
Sandro Tosi172f3742011-09-02 20:06:31 +02001407Running an example several times with too small delay between executions, could
1408lead to this error::
1409
Antoine Pitrou5574c302011-10-12 17:53:43 +02001410 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001411
1412This is because the previous execution has left the socket in a ``TIME_WAIT``
1413state, and can't be immediately reused.
1414
1415There is a :mod:`socket` flag to set, in order to prevent this,
1416:data:`socket.SO_REUSEADDR`::
1417
1418 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1419 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1420 s.bind((HOST, PORT))
1421
1422the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1423``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1424
1425
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001426.. seealso::
1427
1428 For an introduction to socket programming (in C), see the following papers:
1429
1430 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1431
1432 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1433 al,
1434
1435 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1436 PS1:7 and PS1:8). The platform-specific reference material for the various
1437 socket-related system calls are also a valuable source of information on the
1438 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1439 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1440 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.