blob: 1797edd072f0aed3e4c21270aa1990dd516f0cc3 [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
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
Charles-François Natali773e42d2013-02-05 19:42:01 +0100110- Certain other address families (:const:`AF_BLUETOOTH`, :const:`AF_PACKET`,
111 :const:`AF_CAN`) support specific representations.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000112
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
Georg Brandl116aa622007-08-15 14:28:22 +0000141The module :mod:`socket` exports the following constants and functions:
142
143
144.. exception:: error
145
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200146 A deprecated alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000147
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200148 .. versionchanged:: 3.3
149 Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000150
151
152.. exception:: herror
153
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200154 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000155 address-related errors, i.e. for functions that use *h_errno* in the POSIX
156 C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
157 The accompanying value is a pair ``(h_errno, string)`` representing an
158 error returned by a library call. *h_errno* is a numeric value, while
159 *string* represents the description of *h_errno*, as returned by the
160 :c:func:`hstrerror` C function.
Georg Brandl116aa622007-08-15 14:28:22 +0000161
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200162 .. versionchanged:: 3.3
163 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000164
165.. exception:: gaierror
166
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200167 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000168 address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
169 The accompanying value is a pair ``(error, string)`` representing an error
170 returned by a library call. *string* represents the description of
171 *error*, as returned by the :c:func:`gai_strerror` C function. The
172 numeric *error* value will match one of the :const:`EAI_\*` constants
173 defined in this module.
Georg Brandl116aa622007-08-15 14:28:22 +0000174
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200175 .. versionchanged:: 3.3
176 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000177
178.. exception:: timeout
179
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200180 A subclass of :exc:`OSError`, this exception is raised when a timeout
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000181 occurs on a socket which has had timeouts enabled via a prior call to
182 :meth:`~socket.settimeout` (or implicitly through
183 :func:`~socket.setdefaulttimeout`). The accompanying value is a string
184 whose value is currently always "timed out".
Georg Brandl116aa622007-08-15 14:28:22 +0000185
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200186 .. versionchanged:: 3.3
187 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000188
189.. data:: AF_UNIX
190 AF_INET
191 AF_INET6
192
193 These constants represent the address (and protocol) families, used for the
194 first argument to :func:`socket`. If the :const:`AF_UNIX` constant is not
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000195 defined then this protocol is unsupported. More constants may be available
196 depending on the system.
Georg Brandl116aa622007-08-15 14:28:22 +0000197
198
199.. data:: SOCK_STREAM
200 SOCK_DGRAM
201 SOCK_RAW
202 SOCK_RDM
203 SOCK_SEQPACKET
204
205 These constants represent the socket types, used for the second argument to
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000206 :func:`socket`. More constants may be available depending on the system.
207 (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
208 useful.)
Georg Brandl116aa622007-08-15 14:28:22 +0000209
Antoine Pitroub1c54962010-10-14 15:05:38 +0000210.. data:: SOCK_CLOEXEC
211 SOCK_NONBLOCK
212
213 These two constants, if defined, can be combined with the socket types and
214 allow you to set some flags atomically (thus avoiding possible race
215 conditions and the need for separate calls).
216
217 .. seealso::
218
219 `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
220 for a more thorough explanation.
221
222 Availability: Linux >= 2.6.27.
223
224 .. versionadded:: 3.2
Georg Brandl116aa622007-08-15 14:28:22 +0000225
226.. data:: SO_*
227 SOMAXCONN
228 MSG_*
229 SOL_*
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000230 SCM_*
Georg Brandl116aa622007-08-15 14:28:22 +0000231 IPPROTO_*
232 IPPORT_*
233 INADDR_*
234 IP_*
235 IPV6_*
236 EAI_*
237 AI_*
238 NI_*
239 TCP_*
240
241 Many constants of these forms, documented in the Unix documentation on sockets
242 and/or the IP protocol, are also defined in the socket module. They are
243 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
244 methods of socket objects. In most cases, only those symbols that are defined
245 in the Unix header files are defined; for a few symbols, default values are
246 provided.
247
Charles-François Natali47413c12011-10-06 19:47:44 +0200248.. data:: AF_CAN
249 PF_CAN
250 SOL_CAN_*
251 CAN_*
252
253 Many constants of these forms, documented in the Linux documentation, are
254 also defined in the socket module.
255
256 Availability: Linux >= 2.6.25.
257
258 .. versionadded:: 3.3
259
Charles-François Natali773e42d2013-02-05 19:42:01 +0100260.. data:: CAN_BCM
261 CAN_BCM_*
262
263 CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol.
264 Broadcast manager constants, documented in the Linux documentation, are also
265 defined in the socket module.
266
267 Availability: Linux >= 2.6.25.
268
269 .. versionadded:: 3.4
Charles-François Natali47413c12011-10-06 19:47:44 +0200270
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100271.. data:: AF_RDS
272 PF_RDS
273 SOL_RDS
274 RDS_*
275
276 Many constants of these forms, documented in the Linux documentation, are
277 also defined in the socket module.
278
279 Availability: Linux >= 2.6.30.
280
281 .. versionadded:: 3.3
282
283
Christian Heimesfaf2f632008-01-06 16:59:19 +0000284.. data:: SIO_*
285 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000286
Christian Heimesfaf2f632008-01-06 16:59:19 +0000287 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
288 :meth:`ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000289
Georg Brandl116aa622007-08-15 14:28:22 +0000290
Christian Heimes043d6f62008-01-07 17:19:16 +0000291.. data:: TIPC_*
292
293 TIPC related constants, matching the ones exported by the C socket API. See
294 the TIPC documentation for more information.
295
296
Georg Brandl116aa622007-08-15 14:28:22 +0000297.. data:: has_ipv6
298
299 This constant contains a boolean value which indicates if IPv6 is supported on
300 this platform.
301
Georg Brandl116aa622007-08-15 14:28:22 +0000302
Gregory P. Smithb4066372010-01-03 03:28:29 +0000303.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000304
Antoine Pitrou889a5102012-01-12 08:06:19 +0100305 Connect to a TCP service listening on the Internet *address* (a 2-tuple
306 ``(host, port)``), and return the socket object. This is a higher-level
307 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
308 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
309 and then try to connect to all possible addresses in turn until a
310 connection succeeds. This makes it easy to write clients that are
311 compatible to both IPv4 and IPv6.
312
313 Passing the optional *timeout* parameter will set the timeout on the
314 socket instance before attempting to connect. If no *timeout* is
315 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000316 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000317
Gregory P. Smithb4066372010-01-03 03:28:29 +0000318 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
319 socket to bind to as its source address before connecting. If host or port
320 are '' or 0 respectively the OS default behavior will be used.
321
322 .. versionchanged:: 3.2
323 *source_address* was added.
324
Giampaolo Rodolàb383dbb2010-09-08 22:44:12 +0000325 .. versionchanged:: 3.2
326 support for the :keyword:`with` statement was added.
327
Georg Brandl116aa622007-08-15 14:28:22 +0000328
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000329.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000330
Antoine Pitrou91035972010-05-31 17:04:40 +0000331 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
332 all the necessary arguments for creating a socket connected to that service.
333 *host* is a domain name, a string representation of an IPv4/v6 address
334 or ``None``. *port* is a string service name such as ``'http'``, a numeric
335 port number or ``None``. By passing ``None`` as the value of *host*
336 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000337
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000338 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000339 in order to narrow the list of addresses returned. Passing zero as a
340 value for each of these arguments selects the full range of results.
341 The *flags* argument can be one or several of the ``AI_*`` constants,
342 and will influence how results are computed and returned.
343 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
344 and will raise an error if *host* is a domain name.
345
346 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000347
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000348 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000349
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000350 In these tuples, *family*, *type*, *proto* are all integers and are
Antoine Pitrou91035972010-05-31 17:04:40 +0000351 meant to be passed to the :func:`socket` function. *canonname* will be
352 a string representing the canonical name of the *host* if
353 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
354 will be empty. *sockaddr* is a tuple describing a socket address, whose
355 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
356 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
357 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
358 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000359
Antoine Pitrou91035972010-05-31 17:04:40 +0000360 The following example fetches address information for a hypothetical TCP
361 connection to ``www.python.org`` on port 80 (results may differ on your
362 system if IPv6 isn't enabled)::
363
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000364 >>> socket.getaddrinfo("www.python.org", 80, proto=socket.SOL_TCP)
Antoine Pitrou91035972010-05-31 17:04:40 +0000365 [(2, 1, 6, '', ('82.94.164.162', 80)),
366 (10, 1, 6, '', ('2001:888:2000:d::a2', 80, 0, 0))]
Georg Brandl116aa622007-08-15 14:28:22 +0000367
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000368 .. versionchanged:: 3.2
369 parameters can now be passed as single keyword arguments.
370
Georg Brandl116aa622007-08-15 14:28:22 +0000371.. function:: getfqdn([name])
372
373 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
374 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000375 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000376 host, if available. The first name which includes a period is selected. In
377 case no fully qualified domain name is available, the hostname as returned by
378 :func:`gethostname` is returned.
379
Georg Brandl116aa622007-08-15 14:28:22 +0000380
381.. function:: gethostbyname(hostname)
382
383 Translate a host name to IPv4 address format. The IPv4 address is returned as a
384 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
385 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
386 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
387 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
388
389
390.. function:: gethostbyname_ex(hostname)
391
392 Translate a host name to IPv4 address format, extended interface. Return a
393 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
394 host name responding to the given *ip_address*, *aliaslist* is a (possibly
395 empty) list of alternative host names for the same address, and *ipaddrlist* is
396 a list of IPv4 addresses for the same interface on the same host (often but not
397 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
398 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
399 stack support.
400
401
402.. function:: gethostname()
403
404 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000405 interpreter is currently executing.
406
407 If you want to know the current machine's IP address, you may want to use
408 ``gethostbyname(gethostname())``. This operation assumes that there is a
409 valid address-to-host mapping for the host, and the assumption does not
410 always hold.
411
412 Note: :func:`gethostname` doesn't always return the fully qualified domain
413 name; use ``getfqdn()`` (see above).
Georg Brandl116aa622007-08-15 14:28:22 +0000414
415
416.. function:: gethostbyaddr(ip_address)
417
418 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
419 primary host name responding to the given *ip_address*, *aliaslist* is a
420 (possibly empty) list of alternative host names for the same address, and
421 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
422 host (most likely containing only a single address). To find the fully qualified
423 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
424 both IPv4 and IPv6.
425
426
427.. function:: getnameinfo(sockaddr, flags)
428
429 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
430 on the settings of *flags*, the result can contain a fully-qualified domain name
431 or numeric address representation in *host*. Similarly, *port* can contain a
432 string port name or a numeric port number.
433
Georg Brandl116aa622007-08-15 14:28:22 +0000434
435.. function:: getprotobyname(protocolname)
436
437 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
438 suitable for passing as the (optional) third argument to the :func:`socket`
439 function. This is usually only needed for sockets opened in "raw" mode
440 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
441 automatically if the protocol is omitted or zero.
442
443
444.. function:: getservbyname(servicename[, protocolname])
445
446 Translate an Internet service name and protocol name to a port number for that
447 service. The optional protocol name, if given, should be ``'tcp'`` or
448 ``'udp'``, otherwise any protocol will match.
449
450
451.. function:: getservbyport(port[, protocolname])
452
453 Translate an Internet port number and protocol name to a service name for that
454 service. The optional protocol name, if given, should be ``'tcp'`` or
455 ``'udp'``, otherwise any protocol will match.
456
457
458.. function:: socket([family[, type[, proto]]])
459
460 Create a new socket using the given address family, socket type and protocol
461 number. The address family should be :const:`AF_INET` (the default),
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100462 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
463 socket type should be :const:`SOCK_STREAM` (the default),
464 :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
Charles-François Natali773e42d2013-02-05 19:42:01 +0100465 constants. The protocol number is usually zero and may be omitted or in the
466 case where the address family is :const:`AF_CAN` the protocol should be one
467 of :const:`CAN_RAW` or :const:`CAN_BCM`.
Charles-François Natali47413c12011-10-06 19:47:44 +0200468
469 .. versionchanged:: 3.3
470 The AF_CAN family was added.
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100471 The AF_RDS family was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000472
Charles-François Natali773e42d2013-02-05 19:42:01 +0100473 .. versionchanged:: 3.4
474 The CAN_BCM protocol was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000475
Georg Brandl116aa622007-08-15 14:28:22 +0000476.. function:: socketpair([family[, type[, proto]]])
477
478 Build a pair of connected socket objects using the given address family, socket
479 type, and protocol number. Address family, socket type, and protocol number are
480 as for the :func:`socket` function above. The default family is :const:`AF_UNIX`
481 if defined on the platform; otherwise, the default is :const:`AF_INET`.
482 Availability: Unix.
483
Antoine Pitrou9e0b8642010-09-14 18:00:02 +0000484 .. versionchanged:: 3.2
485 The returned socket objects now support the whole socket API, rather
486 than a subset.
487
Georg Brandl116aa622007-08-15 14:28:22 +0000488
489.. function:: fromfd(fd, family, type[, proto])
490
491 Duplicate the file descriptor *fd* (an integer as returned by a file object's
492 :meth:`fileno` method) and build a socket object from the result. Address
493 family, socket type and protocol number are as for the :func:`socket` function
494 above. The file descriptor should refer to a socket, but this is not checked ---
495 subsequent operations on the object may fail if the file descriptor is invalid.
496 This function is rarely needed, but can be used to get or set socket options on
497 a socket passed to a program as standard input or output (such as a server
498 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000499
500
501.. function:: ntohl(x)
502
503 Convert 32-bit positive integers from network to host byte order. On machines
504 where the host byte order is the same as network byte order, this is a no-op;
505 otherwise, it performs a 4-byte swap operation.
506
507
508.. function:: ntohs(x)
509
510 Convert 16-bit positive integers from network to host byte order. On machines
511 where the host byte order is the same as network byte order, this is a no-op;
512 otherwise, it performs a 2-byte swap operation.
513
514
515.. function:: htonl(x)
516
517 Convert 32-bit positive integers from host to network byte order. On machines
518 where the host byte order is the same as network byte order, this is a no-op;
519 otherwise, it performs a 4-byte swap operation.
520
521
522.. function:: htons(x)
523
524 Convert 16-bit positive integers from host to network byte order. On machines
525 where the host byte order is the same as network byte order, this is a no-op;
526 otherwise, it performs a 2-byte swap operation.
527
528
529.. function:: inet_aton(ip_string)
530
531 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000532 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000533 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000534 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000535 for the 32-bit packed binary this function returns.
536
Georg Brandlf5123ef2009-06-04 10:28:36 +0000537 :func:`inet_aton` also accepts strings with less than three dots; see the
538 Unix manual page :manpage:`inet(3)` for details.
539
Georg Brandl116aa622007-08-15 14:28:22 +0000540 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200541 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000542 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000543
Georg Brandl5f259722009-05-04 20:50:30 +0000544 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000545 instead for IPv4/v6 dual stack support.
546
547
548.. function:: inet_ntoa(packed_ip)
549
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000550 Convert a 32-bit packed IPv4 address (a bytes object four characters in
551 length) to its standard dotted-quad string representation (for example,
552 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000553 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000554 is the C type for the 32-bit packed binary data this function takes as an
555 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000556
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000557 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200558 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000559 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000560 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000561
562
563.. function:: inet_pton(address_family, ip_string)
564
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000565 Convert an IP address from its family-specific string format to a packed,
566 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000567 calls for an object of type :c:type:`struct in_addr` (similar to
568 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000569
570 Supported values for *address_family* are currently :const:`AF_INET` and
571 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200572 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000573 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000574 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000575
576 Availability: Unix (maybe not all platforms).
577
Georg Brandl116aa622007-08-15 14:28:22 +0000578
579.. function:: inet_ntop(address_family, packed_ip)
580
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000581 Convert a packed IP address (a bytes object of some number of characters) to its
Georg Brandl116aa622007-08-15 14:28:22 +0000582 standard, family-specific string representation (for example, ``'7.10.0.5'`` or
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000583 ``'5aef:2b::8'``). :func:`inet_ntop` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000584 returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`)
585 or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000586
587 Supported values for *address_family* are currently :const:`AF_INET` and
588 :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the
589 specified address family, :exc:`ValueError` will be raised. A
Antoine Pitrou5574c302011-10-12 17:53:43 +0200590 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000591
592 Availability: Unix (maybe not all platforms).
593
Georg Brandl116aa622007-08-15 14:28:22 +0000594
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000595..
596 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
597 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
598 interface, in which struct msghdr has no msg_control or
599 msg_controllen members, is not currently supported.
600
601.. function:: CMSG_LEN(length)
602
603 Return the total length, without trailing padding, of an ancillary
604 data item with associated data of the given *length*. This value
605 can often be used as the buffer size for :meth:`~socket.recvmsg` to
606 receive a single item of ancillary data, but :rfc:`3542` requires
607 portable applications to use :func:`CMSG_SPACE` and thus include
608 space for padding, even when the item will be the last in the
609 buffer. Raises :exc:`OverflowError` if *length* is outside the
610 permissible range of values.
611
612 Availability: most Unix platforms, possibly others.
613
614 .. versionadded:: 3.3
615
616
617.. function:: CMSG_SPACE(length)
618
619 Return the buffer size needed for :meth:`~socket.recvmsg` to
620 receive an ancillary data item with associated data of the given
621 *length*, along with any trailing padding. The buffer space needed
622 to receive multiple items is the sum of the :func:`CMSG_SPACE`
623 values for their associated data lengths. Raises
624 :exc:`OverflowError` if *length* is outside the permissible range
625 of values.
626
627 Note that some systems might support ancillary data without
628 providing this function. Also note that setting the buffer size
629 using the results of this function may not precisely limit the
630 amount of ancillary data that can be received, since additional
631 data may be able to fit into the padding area.
632
633 Availability: most Unix platforms, possibly others.
634
635 .. versionadded:: 3.3
636
637
Georg Brandl116aa622007-08-15 14:28:22 +0000638.. function:: getdefaulttimeout()
639
Ezio Melotti388c9452011-08-14 08:28:57 +0300640 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000641 of ``None`` indicates that new socket objects have no timeout. When the socket
642 module is first imported, the default is ``None``.
643
Georg Brandl116aa622007-08-15 14:28:22 +0000644
645.. function:: setdefaulttimeout(timeout)
646
Ezio Melotti388c9452011-08-14 08:28:57 +0300647 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000648 the socket module is first imported, the default is ``None``. See
649 :meth:`~socket.settimeout` for possible values and their respective
650 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000651
Georg Brandl116aa622007-08-15 14:28:22 +0000652
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000653.. function:: sethostname(name)
654
655 Set the machine's hostname to *name*. This will raise a
Antoine Pitrou5574c302011-10-12 17:53:43 +0200656 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000657
658 Availability: Unix.
659
660 .. versionadded:: 3.3
661
662
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700663.. function:: if_nameindex()
664
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700665 Return a list of network interface information
666 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200667 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700668
669 Availability: Unix.
670
671 .. versionadded:: 3.3
672
673
674.. function:: if_nametoindex(if_name)
675
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700676 Return a network interface index number corresponding to an
677 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200678 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700679
680 Availability: Unix.
681
682 .. versionadded:: 3.3
683
684
685.. function:: if_indextoname(if_index)
686
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700687 Return a network interface name corresponding to a
688 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200689 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700690
691 Availability: Unix.
692
693 .. versionadded:: 3.3
694
695
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +0000696.. function:: fromshare(data)
697
698 Instantiate a socket from data obtained from :meth:`~socket.share`.
699 The socket is assumed to be in blocking mode.
700
701 Availability: Windows.
702
703 .. versionadded:: 3.3
704
705
Georg Brandl116aa622007-08-15 14:28:22 +0000706.. data:: SocketType
707
708 This is a Python type object that represents the socket object type. It is the
709 same as ``type(socket(...))``.
710
711
Georg Brandl116aa622007-08-15 14:28:22 +0000712.. _socket-objects:
713
714Socket Objects
715--------------
716
717Socket objects have the following methods. Except for :meth:`makefile` these
718correspond to Unix system calls applicable to sockets.
719
720
721.. method:: socket.accept()
722
723 Accept a connection. The socket must be bound to an address and listening for
724 connections. The return value is a pair ``(conn, address)`` where *conn* is a
725 *new* socket object usable to send and receive data on the connection, and
726 *address* is the address bound to the socket on the other end of the connection.
727
728
729.. method:: socket.bind(address)
730
731 Bind the socket to *address*. The socket must not already be bound. (The format
732 of *address* depends on the address family --- see above.)
733
Georg Brandl116aa622007-08-15 14:28:22 +0000734
735.. method:: socket.close()
736
737 Close the socket. All future operations on the socket object will fail. The
738 remote end will receive no more data (after queued data is flushed). Sockets are
739 automatically closed when they are garbage-collected.
740
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000741 .. note::
742 :meth:`close()` releases the resource associated with a connection but
743 does not necessarily close the connection immediately. If you want
744 to close the connection in a timely fashion, call :meth:`shutdown()`
745 before :meth:`close()`.
746
Georg Brandl116aa622007-08-15 14:28:22 +0000747
748.. method:: socket.connect(address)
749
750 Connect to a remote socket at *address*. (The format of *address* depends on the
751 address family --- see above.)
752
Georg Brandl116aa622007-08-15 14:28:22 +0000753
754.. method:: socket.connect_ex(address)
755
756 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +0000757 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +0000758 problems, such as "host not found," can still raise exceptions). The error
759 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +0000760 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +0000761 connects.
762
Georg Brandl116aa622007-08-15 14:28:22 +0000763
Antoine Pitrou6e451df2010-08-09 20:39:54 +0000764.. method:: socket.detach()
765
766 Put the socket object into closed state without actually closing the
767 underlying file descriptor. The file descriptor is returned, and can
768 be reused for other purposes.
769
770 .. versionadded:: 3.2
771
772
Georg Brandl116aa622007-08-15 14:28:22 +0000773.. method:: socket.fileno()
774
775 Return the socket's file descriptor (a small integer). This is useful with
776 :func:`select.select`.
777
778 Under Windows the small integer returned by this method cannot be used where a
779 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
780 this limitation.
781
782
783.. method:: socket.getpeername()
784
785 Return the remote address to which the socket is connected. This is useful to
786 find out the port number of a remote IPv4/v6 socket, for instance. (The format
787 of the address returned depends on the address family --- see above.) On some
788 systems this function is not supported.
789
790
791.. method:: socket.getsockname()
792
793 Return the socket's own address. This is useful to find out the port number of
794 an IPv4/v6 socket, for instance. (The format of the address returned depends on
795 the address family --- see above.)
796
797
798.. method:: socket.getsockopt(level, optname[, buflen])
799
800 Return the value of the given socket option (see the Unix man page
801 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
802 are defined in this module. If *buflen* is absent, an integer option is assumed
803 and its integer value is returned by the function. If *buflen* is present, it
804 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000805 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +0000806 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000807 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +0000808
Georg Brandl48310cd2009-01-03 21:18:54 +0000809
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000810.. method:: socket.gettimeout()
811
Ezio Melotti388c9452011-08-14 08:28:57 +0300812 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000813 or ``None`` if no timeout is set. This reflects the last call to
814 :meth:`setblocking` or :meth:`settimeout`.
815
816
Christian Heimesfaf2f632008-01-06 16:59:19 +0000817.. method:: socket.ioctl(control, option)
818
Georg Brandl48310cd2009-01-03 21:18:54 +0000819 :platform: Windows
820
Christian Heimes679db4a2008-01-18 09:56:22 +0000821 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +0000822 interface. Please refer to the `Win32 documentation
823 <http://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
824 information.
Georg Brandl48310cd2009-01-03 21:18:54 +0000825
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000826 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
827 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000828
829.. method:: socket.listen(backlog)
830
831 Listen for connections made to the socket. The *backlog* argument specifies the
Antoine Pitrou1be815a2011-05-10 19:16:29 +0200832 maximum number of queued connections and should be at least 0; the maximum value
833 is system-dependent (usually 5), the minimum value is forced to 0.
Georg Brandl116aa622007-08-15 14:28:22 +0000834
835
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000836.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
837 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000838
839 .. index:: single: I/O control; buffering
840
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000841 Return a :term:`file object` associated with the socket. The exact returned
842 type depends on the arguments given to :meth:`makefile`. These arguments are
843 interpreted the same way as by the built-in :func:`open` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000844
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000845 Closing the file object won't close the socket unless there are no remaining
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000846 references to the socket. The socket must be in blocking mode; it can have
847 a timeout, but the file object's internal buffer may end up in a inconsistent
848 state if a timeout occurs.
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000849
850 .. note::
851
852 On Windows, the file-like object created by :meth:`makefile` cannot be
853 used where a file object with a file descriptor is expected, such as the
854 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000855
Georg Brandl116aa622007-08-15 14:28:22 +0000856
857.. method:: socket.recv(bufsize[, flags])
858
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000859 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +0000860 data received. The maximum amount of data to be received at once is specified
861 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
862 the optional argument *flags*; it defaults to zero.
863
864 .. note::
865
866 For best match with hardware and network realities, the value of *bufsize*
867 should be a relatively small power of 2, for example, 4096.
868
869
870.. method:: socket.recvfrom(bufsize[, flags])
871
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000872 Receive data from the socket. The return value is a pair ``(bytes, address)``
873 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +0000874 address of the socket sending the data. See the Unix manual page
875 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
876 to zero. (The format of *address* depends on the address family --- see above.)
877
878
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000879.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
880
881 Receive normal data (up to *bufsize* bytes) and ancillary data from
882 the socket. The *ancbufsize* argument sets the size in bytes of
883 the internal buffer used to receive the ancillary data; it defaults
884 to 0, meaning that no ancillary data will be received. Appropriate
885 buffer sizes for ancillary data can be calculated using
886 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
887 into the buffer might be truncated or discarded. The *flags*
888 argument defaults to 0 and has the same meaning as for
889 :meth:`recv`.
890
891 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
892 address)``. The *data* item is a :class:`bytes` object holding the
893 non-ancillary data received. The *ancdata* item is a list of zero
894 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
895 the ancillary data (control messages) received: *cmsg_level* and
896 *cmsg_type* are integers specifying the protocol level and
897 protocol-specific type respectively, and *cmsg_data* is a
898 :class:`bytes` object holding the associated data. The *msg_flags*
899 item is the bitwise OR of various flags indicating conditions on
900 the received message; see your system documentation for details.
901 If the receiving socket is unconnected, *address* is the address of
902 the sending socket, if available; otherwise, its value is
903 unspecified.
904
905 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
906 pass file descriptors between processes over an :const:`AF_UNIX`
907 socket. When this facility is used (it is often restricted to
908 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
909 ancillary data, items of the form ``(socket.SOL_SOCKET,
910 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
911 representing the new file descriptors as a binary array of the
912 native C :c:type:`int` type. If :meth:`recvmsg` raises an
913 exception after the system call returns, it will first attempt to
914 close any file descriptors received via this mechanism.
915
916 Some systems do not indicate the truncated length of ancillary data
917 items which have been only partially received. If an item appears
918 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
919 a :exc:`RuntimeWarning`, and will return the part of it which is
920 inside the buffer provided it has not been truncated before the
921 start of its associated data.
922
923 On systems which support the :const:`SCM_RIGHTS` mechanism, the
924 following function will receive up to *maxfds* file descriptors,
925 returning the message data and a list containing the descriptors
926 (while ignoring unexpected conditions such as unrelated control
927 messages being received). See also :meth:`sendmsg`. ::
928
929 import socket, array
930
931 def recv_fds(sock, msglen, maxfds):
932 fds = array.array("i") # Array of ints
933 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
934 for cmsg_level, cmsg_type, cmsg_data in ancdata:
935 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
936 # Append data, ignoring any truncated integers at the end.
937 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
938 return msg, list(fds)
939
940 Availability: most Unix platforms, possibly others.
941
942 .. versionadded:: 3.3
943
944
945.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
946
947 Receive normal data and ancillary data from the socket, behaving as
948 :meth:`recvmsg` would, but scatter the non-ancillary data into a
949 series of buffers instead of returning a new bytes object. The
950 *buffers* argument must be an iterable of objects that export
951 writable buffers (e.g. :class:`bytearray` objects); these will be
952 filled with successive chunks of the non-ancillary data until it
953 has all been written or there are no more buffers. The operating
954 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
955 on the number of buffers that can be used. The *ancbufsize* and
956 *flags* arguments have the same meaning as for :meth:`recvmsg`.
957
958 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
959 address)``, where *nbytes* is the total number of bytes of
960 non-ancillary data written into the buffers, and *ancdata*,
961 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
962
963 Example::
964
965 >>> import socket
966 >>> s1, s2 = socket.socketpair()
967 >>> b1 = bytearray(b'----')
968 >>> b2 = bytearray(b'0123456789')
969 >>> b3 = bytearray(b'--------------')
970 >>> s1.send(b'Mary had a little lamb')
971 22
972 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
973 (22, [], 0, None)
974 >>> [b1, b2, b3]
975 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
976
977 Availability: most Unix platforms, possibly others.
978
979 .. versionadded:: 3.3
980
981
Georg Brandl116aa622007-08-15 14:28:22 +0000982.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
983
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000984 Receive data from the socket, writing it into *buffer* instead of creating a
985 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +0000986 the number of bytes received and *address* is the address of the socket sending
987 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
988 optional argument *flags*; it defaults to zero. (The format of *address*
989 depends on the address family --- see above.)
990
Georg Brandl116aa622007-08-15 14:28:22 +0000991
992.. method:: socket.recv_into(buffer[, nbytes[, flags]])
993
994 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000995 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000996 receive up to the size available in the given buffer. Returns the number of
997 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
998 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +0000999
Georg Brandl116aa622007-08-15 14:28:22 +00001000
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001001.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001002
1003 Send data to the socket. The socket must be connected to a remote socket. The
1004 optional *flags* argument has the same meaning as for :meth:`recv` above.
1005 Returns the number of bytes sent. Applications are responsible for checking that
1006 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001007 application needs to attempt delivery of the remaining data. For further
1008 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +00001009
1010
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001011.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001012
1013 Send data to the socket. The socket must be connected to a remote socket. The
1014 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001015 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001016 either all data has been sent or an error occurs. ``None`` is returned on
1017 success. On error, an exception is raised, and there is no way to determine how
1018 much data, if any, was successfully sent.
1019
1020
Ezio Melottie0add762012-09-14 06:32:35 +03001021.. method:: socket.sendto(bytes, address)
1022 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001023
1024 Send data to the socket. The socket should not be connected to a remote socket,
1025 since the destination socket is specified by *address*. The optional *flags*
1026 argument has the same meaning as for :meth:`recv` above. Return the number of
1027 bytes sent. (The format of *address* depends on the address family --- see
1028 above.)
1029
1030
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001031.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1032
1033 Send normal and ancillary data to the socket, gathering the
1034 non-ancillary data from a series of buffers and concatenating it
1035 into a single message. The *buffers* argument specifies the
1036 non-ancillary data as an iterable of buffer-compatible objects
1037 (e.g. :class:`bytes` objects); the operating system may set a limit
1038 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1039 that can be used. The *ancdata* argument specifies the ancillary
1040 data (control messages) as an iterable of zero or more tuples
1041 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1042 *cmsg_type* are integers specifying the protocol level and
1043 protocol-specific type respectively, and *cmsg_data* is a
1044 buffer-compatible object holding the associated data. Note that
1045 some systems (in particular, systems without :func:`CMSG_SPACE`)
1046 might support sending only one control message per call. The
1047 *flags* argument defaults to 0 and has the same meaning as for
1048 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1049 destination address for the message. The return value is the
1050 number of bytes of non-ancillary data sent.
1051
1052 The following function sends the list of file descriptors *fds*
1053 over an :const:`AF_UNIX` socket, on systems which support the
1054 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1055
1056 import socket, array
1057
1058 def send_fds(sock, msg, fds):
1059 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1060
1061 Availability: most Unix platforms, possibly others.
1062
1063 .. versionadded:: 3.3
1064
1065
Georg Brandl116aa622007-08-15 14:28:22 +00001066.. method:: socket.setblocking(flag)
1067
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001068 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1069 socket is set to non-blocking, else to blocking mode.
1070
1071 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1072
1073 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1074
1075 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001076
1077
1078.. method:: socket.settimeout(value)
1079
1080 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001081 nonnegative floating point number expressing seconds, or ``None``.
1082 If a non-zero value is given, subsequent socket operations will raise a
1083 :exc:`timeout` exception if the timeout period *value* has elapsed before
1084 the operation has completed. If zero is given, the socket is put in
1085 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001086
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001087 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001088
1089
1090.. method:: socket.setsockopt(level, optname, value)
1091
1092 .. index:: module: struct
1093
1094 Set the value of the given socket option (see the Unix manual page
1095 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
1096 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001097 bytes object representing a buffer. In the latter case it is up to the caller to
1098 ensure that the bytestring contains the proper bits (see the optional built-in
1099 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001100
1101
1102.. method:: socket.shutdown(how)
1103
1104 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1105 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1106 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001107 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001108
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001109
1110.. method:: socket.share(process_id)
1111
1112 :platform: Windows
1113
1114 Duplacet a socket and prepare it for sharing with a target process. The
1115 target process must be provided with *process_id*. The resulting bytes object
1116 can then be passed to the target process using some form of interprocess
1117 communication and the socket can be recreated there using :func:`fromshare`.
1118 Once this method has been called, it is safe to close the socket since
1119 the operating system has already duplicated it for the target process.
1120
1121 .. versionadded:: 3.3
1122
1123
Georg Brandl8569e582010-05-19 20:57:08 +00001124Note that there are no methods :meth:`read` or :meth:`write`; use
1125:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001126
1127Socket objects also have these (read-only) attributes that correspond to the
1128values given to the :class:`socket` constructor.
1129
1130
1131.. attribute:: socket.family
1132
1133 The socket family.
1134
Georg Brandl116aa622007-08-15 14:28:22 +00001135
1136.. attribute:: socket.type
1137
1138 The socket type.
1139
Georg Brandl116aa622007-08-15 14:28:22 +00001140
1141.. attribute:: socket.proto
1142
1143 The socket protocol.
1144
Georg Brandl116aa622007-08-15 14:28:22 +00001145
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001146
1147.. _socket-timeouts:
1148
1149Notes on socket timeouts
1150------------------------
1151
1152A socket object can be in one of three modes: blocking, non-blocking, or
1153timeout. Sockets are by default always created in blocking mode, but this
1154can be changed by calling :func:`setdefaulttimeout`.
1155
1156* In *blocking mode*, operations block until complete or the system returns
1157 an error (such as connection timed out).
1158
1159* In *non-blocking mode*, operations fail (with an error that is unfortunately
1160 system-dependent) if they cannot be completed immediately: functions from the
1161 :mod:`select` can be used to know when and whether a socket is available for
1162 reading or writing.
1163
1164* In *timeout mode*, operations fail if they cannot be completed within the
1165 timeout specified for the socket (they raise a :exc:`timeout` exception)
1166 or if the system returns an error.
1167
1168.. note::
1169 At the operating system level, sockets in *timeout mode* are internally set
1170 in non-blocking mode. Also, the blocking and timeout modes are shared between
1171 file descriptors and socket objects that refer to the same network endpoint.
1172 This implementation detail can have visible consequences if e.g. you decide
1173 to use the :meth:`~socket.fileno()` of a socket.
1174
1175Timeouts and the ``connect`` method
1176^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1177
1178The :meth:`~socket.connect` operation is also subject to the timeout
1179setting, and in general it is recommended to call :meth:`~socket.settimeout`
1180before calling :meth:`~socket.connect` or pass a timeout parameter to
1181:meth:`create_connection`. However, the system network stack may also
1182return a connection timeout error of its own regardless of any Python socket
1183timeout setting.
1184
1185Timeouts and the ``accept`` method
1186^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1187
1188If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1189the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1190behaviour depends on settings of the listening socket:
1191
1192* if the listening socket is in *blocking mode* or in *timeout mode*,
1193 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1194
1195* if the listening socket is in *non-blocking mode*, whether the socket
1196 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1197 is operating system-dependent. If you want to ensure cross-platform
1198 behaviour, it is recommended you manually override this setting.
1199
1200
Georg Brandl116aa622007-08-15 14:28:22 +00001201.. _socket-example:
1202
1203Example
1204-------
1205
1206Here are four minimal example programs using the TCP/IP protocol: a server that
1207echoes all data that it receives back (servicing only one client), and a client
1208using it. Note that a server must perform the sequence :func:`socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001209:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1210repeating the :meth:`~socket.accept` to service more than one client), while a
1211client only needs the sequence :func:`socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001212note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1213the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001214:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001215
1216The first two examples support IPv4 only. ::
1217
1218 # Echo server program
1219 import socket
1220
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001221 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001222 PORT = 50007 # Arbitrary non-privileged port
1223 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1224 s.bind((HOST, PORT))
1225 s.listen(1)
1226 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001227 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001228 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001229 data = conn.recv(1024)
1230 if not data: break
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001231 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001232 conn.close()
1233
1234::
1235
1236 # Echo client program
1237 import socket
1238
1239 HOST = 'daring.cwi.nl' # The remote host
1240 PORT = 50007 # The same port as used by the server
1241 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1242 s.connect((HOST, PORT))
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001243 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001244 data = s.recv(1024)
1245 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001246 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001247
1248The next two examples are identical to the above two, but support both IPv4 and
1249IPv6. The server side will listen to the first address family available (it
1250should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1251precedence and the server may not accept IPv4 traffic. The client side will try
1252to connect to the all addresses returned as a result of the name resolution, and
1253sends traffic to the first one connected successfully. ::
1254
1255 # Echo server program
1256 import socket
1257 import sys
1258
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001259 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001260 PORT = 50007 # Arbitrary non-privileged port
1261 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001262 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1263 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001264 af, socktype, proto, canonname, sa = res
1265 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001266 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001267 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001268 s = None
1269 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001270 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001271 s.bind(sa)
1272 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001273 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001274 s.close()
1275 s = None
1276 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001277 break
1278 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001279 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001280 sys.exit(1)
1281 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001282 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001283 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001284 data = conn.recv(1024)
1285 if not data: break
1286 conn.send(data)
1287 conn.close()
1288
1289::
1290
1291 # Echo client program
1292 import socket
1293 import sys
1294
1295 HOST = 'daring.cwi.nl' # The remote host
1296 PORT = 50007 # The same port as used by the server
1297 s = None
1298 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1299 af, socktype, proto, canonname, sa = res
1300 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001301 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001302 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001303 s = None
1304 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001305 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001306 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001307 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001308 s.close()
1309 s = None
1310 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001311 break
1312 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001313 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001314 sys.exit(1)
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001315 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001316 data = s.recv(1024)
1317 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001318 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001319
Georg Brandl48310cd2009-01-03 21:18:54 +00001320
Charles-François Natali47413c12011-10-06 19:47:44 +02001321The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001322sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001323the interface::
1324
1325 import socket
1326
1327 # the public network interface
1328 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001329
Christian Heimesfaf2f632008-01-06 16:59:19 +00001330 # create a raw socket and bind it to the public interface
1331 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1332 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001333
Christian Heimesfaf2f632008-01-06 16:59:19 +00001334 # Include IP headers
1335 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001336
Christian Heimesfaf2f632008-01-06 16:59:19 +00001337 # receive all packages
1338 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001339
Christian Heimesfaf2f632008-01-06 16:59:19 +00001340 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001341 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001342
Christian Heimesc3f30c42008-02-22 16:37:40 +00001343 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001344 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001345
Charles-François Natali47413c12011-10-06 19:47:44 +02001346The last example shows how to use the socket interface to communicate to a CAN
Charles-François Natali773e42d2013-02-05 19:42:01 +01001347network using the raw socket protocol. To use CAN with the broadcast
1348manager protocol instead, open a socket with::
1349
1350 socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1351
1352After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
Mark Dickinsond80b16d2013-02-10 18:43:16 +00001353can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
Charles-François Natali773e42d2013-02-05 19:42:01 +01001354their counterparts) on the socket object as usual.
1355
1356This example might require special priviledge::
Charles-François Natali47413c12011-10-06 19:47:44 +02001357
1358 import socket
1359 import struct
1360
1361
Georg Brandla673eb82012-03-04 16:17:05 +01001362 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02001363
1364 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001365 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001366
1367 def build_can_frame(can_id, data):
1368 can_dlc = len(data)
1369 data = data.ljust(8, b'\x00')
1370 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1371
1372 def dissect_can_frame(frame):
1373 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1374 return (can_id, can_dlc, data[:can_dlc])
1375
1376
Georg Brandla673eb82012-03-04 16:17:05 +01001377 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02001378 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1379 s.bind(('vcan0',))
1380
1381 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001382 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001383
1384 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1385
1386 try:
1387 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001388 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001389 print('Error sending CAN frame')
1390
1391 try:
1392 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001393 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001394 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001395
Sandro Tosi172f3742011-09-02 20:06:31 +02001396Running an example several times with too small delay between executions, could
1397lead to this error::
1398
Antoine Pitrou5574c302011-10-12 17:53:43 +02001399 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001400
1401This is because the previous execution has left the socket in a ``TIME_WAIT``
1402state, and can't be immediately reused.
1403
1404There is a :mod:`socket` flag to set, in order to prevent this,
1405:data:`socket.SO_REUSEADDR`::
1406
1407 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1408 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1409 s.bind((HOST, PORT))
1410
1411the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1412``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1413
1414
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001415.. seealso::
1416
1417 For an introduction to socket programming (in C), see the following papers:
1418
1419 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1420
1421 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1422 al,
1423
1424 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1425 PS1:7 and PS1:8). The platform-specific reference material for the various
1426 socket-related system calls are also a valuable source of information on the
1427 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1428 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1429 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.
1430