blob: 5737b409901632415720b48b4ef956b37ecae8e6 [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
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
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
260
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100261.. data:: AF_RDS
262 PF_RDS
263 SOL_RDS
264 RDS_*
265
266 Many constants of these forms, documented in the Linux documentation, are
267 also defined in the socket module.
268
269 Availability: Linux >= 2.6.30.
270
271 .. versionadded:: 3.3
272
273
Christian Heimesfaf2f632008-01-06 16:59:19 +0000274.. data:: SIO_*
275 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000276
Christian Heimesfaf2f632008-01-06 16:59:19 +0000277 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
278 :meth:`ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000279
Georg Brandl116aa622007-08-15 14:28:22 +0000280
Christian Heimes043d6f62008-01-07 17:19:16 +0000281.. data:: TIPC_*
282
283 TIPC related constants, matching the ones exported by the C socket API. See
284 the TIPC documentation for more information.
285
286
Georg Brandl116aa622007-08-15 14:28:22 +0000287.. data:: has_ipv6
288
289 This constant contains a boolean value which indicates if IPv6 is supported on
290 this platform.
291
Georg Brandl116aa622007-08-15 14:28:22 +0000292
Gregory P. Smithb4066372010-01-03 03:28:29 +0000293.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000294
Antoine Pitrou889a5102012-01-12 08:06:19 +0100295 Connect to a TCP service listening on the Internet *address* (a 2-tuple
296 ``(host, port)``), and return the socket object. This is a higher-level
297 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
298 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
299 and then try to connect to all possible addresses in turn until a
300 connection succeeds. This makes it easy to write clients that are
301 compatible to both IPv4 and IPv6.
302
303 Passing the optional *timeout* parameter will set the timeout on the
304 socket instance before attempting to connect. If no *timeout* is
305 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000306 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000307
Gregory P. Smithb4066372010-01-03 03:28:29 +0000308 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
309 socket to bind to as its source address before connecting. If host or port
310 are '' or 0 respectively the OS default behavior will be used.
311
312 .. versionchanged:: 3.2
313 *source_address* was added.
314
Giampaolo Rodolàb383dbb2010-09-08 22:44:12 +0000315 .. versionchanged:: 3.2
316 support for the :keyword:`with` statement was added.
317
Georg Brandl116aa622007-08-15 14:28:22 +0000318
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000319.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000320
Antoine Pitrou91035972010-05-31 17:04:40 +0000321 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
322 all the necessary arguments for creating a socket connected to that service.
323 *host* is a domain name, a string representation of an IPv4/v6 address
324 or ``None``. *port* is a string service name such as ``'http'``, a numeric
325 port number or ``None``. By passing ``None`` as the value of *host*
326 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000327
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000328 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000329 in order to narrow the list of addresses returned. Passing zero as a
330 value for each of these arguments selects the full range of results.
331 The *flags* argument can be one or several of the ``AI_*`` constants,
332 and will influence how results are computed and returned.
333 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
334 and will raise an error if *host* is a domain name.
335
336 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000337
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000338 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000339
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000340 In these tuples, *family*, *type*, *proto* are all integers and are
Antoine Pitrou91035972010-05-31 17:04:40 +0000341 meant to be passed to the :func:`socket` function. *canonname* will be
342 a string representing the canonical name of the *host* if
343 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
344 will be empty. *sockaddr* is a tuple describing a socket address, whose
345 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
346 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
347 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
348 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000349
Antoine Pitrou91035972010-05-31 17:04:40 +0000350 The following example fetches address information for a hypothetical TCP
351 connection to ``www.python.org`` on port 80 (results may differ on your
352 system if IPv6 isn't enabled)::
353
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000354 >>> socket.getaddrinfo("www.python.org", 80, proto=socket.SOL_TCP)
Antoine Pitrou91035972010-05-31 17:04:40 +0000355 [(2, 1, 6, '', ('82.94.164.162', 80)),
356 (10, 1, 6, '', ('2001:888:2000:d::a2', 80, 0, 0))]
Georg Brandl116aa622007-08-15 14:28:22 +0000357
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000358 .. versionchanged:: 3.2
359 parameters can now be passed as single keyword arguments.
360
Georg Brandl116aa622007-08-15 14:28:22 +0000361.. function:: getfqdn([name])
362
363 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
364 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000365 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000366 host, if available. The first name which includes a period is selected. In
367 case no fully qualified domain name is available, the hostname as returned by
368 :func:`gethostname` is returned.
369
Georg Brandl116aa622007-08-15 14:28:22 +0000370
371.. function:: gethostbyname(hostname)
372
373 Translate a host name to IPv4 address format. The IPv4 address is returned as a
374 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
375 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
376 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
377 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
378
379
380.. function:: gethostbyname_ex(hostname)
381
382 Translate a host name to IPv4 address format, extended interface. Return a
383 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
384 host name responding to the given *ip_address*, *aliaslist* is a (possibly
385 empty) list of alternative host names for the same address, and *ipaddrlist* is
386 a list of IPv4 addresses for the same interface on the same host (often but not
387 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
388 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
389 stack support.
390
391
392.. function:: gethostname()
393
394 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000395 interpreter is currently executing.
396
397 If you want to know the current machine's IP address, you may want to use
398 ``gethostbyname(gethostname())``. This operation assumes that there is a
399 valid address-to-host mapping for the host, and the assumption does not
400 always hold.
401
402 Note: :func:`gethostname` doesn't always return the fully qualified domain
403 name; use ``getfqdn()`` (see above).
Georg Brandl116aa622007-08-15 14:28:22 +0000404
405
406.. function:: gethostbyaddr(ip_address)
407
408 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
409 primary host name responding to the given *ip_address*, *aliaslist* is a
410 (possibly empty) list of alternative host names for the same address, and
411 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
412 host (most likely containing only a single address). To find the fully qualified
413 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
414 both IPv4 and IPv6.
415
416
417.. function:: getnameinfo(sockaddr, flags)
418
419 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
420 on the settings of *flags*, the result can contain a fully-qualified domain name
421 or numeric address representation in *host*. Similarly, *port* can contain a
422 string port name or a numeric port number.
423
Georg Brandl116aa622007-08-15 14:28:22 +0000424
425.. function:: getprotobyname(protocolname)
426
427 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
428 suitable for passing as the (optional) third argument to the :func:`socket`
429 function. This is usually only needed for sockets opened in "raw" mode
430 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
431 automatically if the protocol is omitted or zero.
432
433
434.. function:: getservbyname(servicename[, protocolname])
435
436 Translate an Internet service name and protocol name to a port number for that
437 service. The optional protocol name, if given, should be ``'tcp'`` or
438 ``'udp'``, otherwise any protocol will match.
439
440
441.. function:: getservbyport(port[, protocolname])
442
443 Translate an Internet port number and protocol name to a service name for that
444 service. The optional protocol name, if given, should be ``'tcp'`` or
445 ``'udp'``, otherwise any protocol will match.
446
447
448.. function:: socket([family[, type[, proto]]])
449
450 Create a new socket using the given address family, socket type and protocol
451 number. The address family should be :const:`AF_INET` (the default),
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100452 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
453 socket type should be :const:`SOCK_STREAM` (the default),
454 :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
455 constants. The protocol number is usually zero and may be omitted in that
456 case or :const:`CAN_RAW` in case the address family is :const:`AF_CAN`.
Charles-François Natali47413c12011-10-06 19:47:44 +0200457
458 .. versionchanged:: 3.3
459 The AF_CAN family was added.
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100460 The AF_RDS family was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000461
462
Georg Brandl116aa622007-08-15 14:28:22 +0000463.. function:: socketpair([family[, type[, proto]]])
464
465 Build a pair of connected socket objects using the given address family, socket
466 type, and protocol number. Address family, socket type, and protocol number are
467 as for the :func:`socket` function above. The default family is :const:`AF_UNIX`
468 if defined on the platform; otherwise, the default is :const:`AF_INET`.
469 Availability: Unix.
470
Antoine Pitrou9e0b8642010-09-14 18:00:02 +0000471 .. versionchanged:: 3.2
472 The returned socket objects now support the whole socket API, rather
473 than a subset.
474
Georg Brandl116aa622007-08-15 14:28:22 +0000475
476.. function:: fromfd(fd, family, type[, proto])
477
478 Duplicate the file descriptor *fd* (an integer as returned by a file object's
479 :meth:`fileno` method) and build a socket object from the result. Address
480 family, socket type and protocol number are as for the :func:`socket` function
481 above. The file descriptor should refer to a socket, but this is not checked ---
482 subsequent operations on the object may fail if the file descriptor is invalid.
483 This function is rarely needed, but can be used to get or set socket options on
484 a socket passed to a program as standard input or output (such as a server
485 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000486
487
488.. function:: ntohl(x)
489
490 Convert 32-bit positive integers from network to host byte order. On machines
491 where the host byte order is the same as network byte order, this is a no-op;
492 otherwise, it performs a 4-byte swap operation.
493
494
495.. function:: ntohs(x)
496
497 Convert 16-bit positive integers from network to host byte order. On machines
498 where the host byte order is the same as network byte order, this is a no-op;
499 otherwise, it performs a 2-byte swap operation.
500
501
502.. function:: htonl(x)
503
504 Convert 32-bit positive integers from host to network byte order. On machines
505 where the host byte order is the same as network byte order, this is a no-op;
506 otherwise, it performs a 4-byte swap operation.
507
508
509.. function:: htons(x)
510
511 Convert 16-bit positive integers from host to network byte order. On machines
512 where the host byte order is the same as network byte order, this is a no-op;
513 otherwise, it performs a 2-byte swap operation.
514
515
516.. function:: inet_aton(ip_string)
517
518 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000519 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000520 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000521 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000522 for the 32-bit packed binary this function returns.
523
Georg Brandlf5123ef2009-06-04 10:28:36 +0000524 :func:`inet_aton` also accepts strings with less than three dots; see the
525 Unix manual page :manpage:`inet(3)` for details.
526
Georg Brandl116aa622007-08-15 14:28:22 +0000527 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200528 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000529 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000530
Georg Brandl5f259722009-05-04 20:50:30 +0000531 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000532 instead for IPv4/v6 dual stack support.
533
534
535.. function:: inet_ntoa(packed_ip)
536
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000537 Convert a 32-bit packed IPv4 address (a bytes object four characters in
538 length) to its standard dotted-quad string representation (for example,
539 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000540 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000541 is the C type for the 32-bit packed binary data this function takes as an
542 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000543
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000544 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200545 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000546 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000547 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000548
549
550.. function:: inet_pton(address_family, ip_string)
551
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000552 Convert an IP address from its family-specific string format to a packed,
553 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000554 calls for an object of type :c:type:`struct in_addr` (similar to
555 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000556
557 Supported values for *address_family* are currently :const:`AF_INET` and
558 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200559 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000560 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000561 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000562
563 Availability: Unix (maybe not all platforms).
564
Georg Brandl116aa622007-08-15 14:28:22 +0000565
566.. function:: inet_ntop(address_family, packed_ip)
567
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000568 Convert a packed IP address (a bytes object of some number of characters) to its
Georg Brandl116aa622007-08-15 14:28:22 +0000569 standard, family-specific string representation (for example, ``'7.10.0.5'`` or
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000570 ``'5aef:2b::8'``). :func:`inet_ntop` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000571 returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`)
572 or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000573
574 Supported values for *address_family* are currently :const:`AF_INET` and
575 :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the
576 specified address family, :exc:`ValueError` will be raised. A
Antoine Pitrou5574c302011-10-12 17:53:43 +0200577 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000578
579 Availability: Unix (maybe not all platforms).
580
Georg Brandl116aa622007-08-15 14:28:22 +0000581
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000582..
583 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
584 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
585 interface, in which struct msghdr has no msg_control or
586 msg_controllen members, is not currently supported.
587
588.. function:: CMSG_LEN(length)
589
590 Return the total length, without trailing padding, of an ancillary
591 data item with associated data of the given *length*. This value
592 can often be used as the buffer size for :meth:`~socket.recvmsg` to
593 receive a single item of ancillary data, but :rfc:`3542` requires
594 portable applications to use :func:`CMSG_SPACE` and thus include
595 space for padding, even when the item will be the last in the
596 buffer. Raises :exc:`OverflowError` if *length* is outside the
597 permissible range of values.
598
599 Availability: most Unix platforms, possibly others.
600
601 .. versionadded:: 3.3
602
603
604.. function:: CMSG_SPACE(length)
605
606 Return the buffer size needed for :meth:`~socket.recvmsg` to
607 receive an ancillary data item with associated data of the given
608 *length*, along with any trailing padding. The buffer space needed
609 to receive multiple items is the sum of the :func:`CMSG_SPACE`
610 values for their associated data lengths. Raises
611 :exc:`OverflowError` if *length* is outside the permissible range
612 of values.
613
614 Note that some systems might support ancillary data without
615 providing this function. Also note that setting the buffer size
616 using the results of this function may not precisely limit the
617 amount of ancillary data that can be received, since additional
618 data may be able to fit into the padding area.
619
620 Availability: most Unix platforms, possibly others.
621
622 .. versionadded:: 3.3
623
624
Georg Brandl116aa622007-08-15 14:28:22 +0000625.. function:: getdefaulttimeout()
626
Ezio Melotti388c9452011-08-14 08:28:57 +0300627 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000628 of ``None`` indicates that new socket objects have no timeout. When the socket
629 module is first imported, the default is ``None``.
630
Georg Brandl116aa622007-08-15 14:28:22 +0000631
632.. function:: setdefaulttimeout(timeout)
633
Ezio Melotti388c9452011-08-14 08:28:57 +0300634 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000635 the socket module is first imported, the default is ``None``. See
636 :meth:`~socket.settimeout` for possible values and their respective
637 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000638
Georg Brandl116aa622007-08-15 14:28:22 +0000639
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000640.. function:: sethostname(name)
641
642 Set the machine's hostname to *name*. This will raise a
Antoine Pitrou5574c302011-10-12 17:53:43 +0200643 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000644
645 Availability: Unix.
646
647 .. versionadded:: 3.3
648
649
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700650.. function:: if_nameindex()
651
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700652 Return a list of network interface information
653 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200654 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700655
656 Availability: Unix.
657
658 .. versionadded:: 3.3
659
660
661.. function:: if_nametoindex(if_name)
662
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700663 Return a network interface index number corresponding to an
664 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200665 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700666
667 Availability: Unix.
668
669 .. versionadded:: 3.3
670
671
672.. function:: if_indextoname(if_index)
673
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700674 Return a network interface name corresponding to a
675 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200676 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700677
678 Availability: Unix.
679
680 .. versionadded:: 3.3
681
682
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +0000683.. function:: fromshare(data)
684
685 Instantiate a socket from data obtained from :meth:`~socket.share`.
686 The socket is assumed to be in blocking mode.
687
688 Availability: Windows.
689
690 .. versionadded:: 3.3
691
692
Georg Brandl116aa622007-08-15 14:28:22 +0000693.. data:: SocketType
694
695 This is a Python type object that represents the socket object type. It is the
696 same as ``type(socket(...))``.
697
698
Georg Brandl116aa622007-08-15 14:28:22 +0000699.. _socket-objects:
700
701Socket Objects
702--------------
703
704Socket objects have the following methods. Except for :meth:`makefile` these
705correspond to Unix system calls applicable to sockets.
706
707
708.. method:: socket.accept()
709
710 Accept a connection. The socket must be bound to an address and listening for
711 connections. The return value is a pair ``(conn, address)`` where *conn* is a
712 *new* socket object usable to send and receive data on the connection, and
713 *address* is the address bound to the socket on the other end of the connection.
714
715
716.. method:: socket.bind(address)
717
718 Bind the socket to *address*. The socket must not already be bound. (The format
719 of *address* depends on the address family --- see above.)
720
Georg Brandl116aa622007-08-15 14:28:22 +0000721
722.. method:: socket.close()
723
724 Close the socket. All future operations on the socket object will fail. The
725 remote end will receive no more data (after queued data is flushed). Sockets are
726 automatically closed when they are garbage-collected.
727
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000728 .. note::
729 :meth:`close()` releases the resource associated with a connection but
730 does not necessarily close the connection immediately. If you want
731 to close the connection in a timely fashion, call :meth:`shutdown()`
732 before :meth:`close()`.
733
Georg Brandl116aa622007-08-15 14:28:22 +0000734
735.. method:: socket.connect(address)
736
737 Connect to a remote socket at *address*. (The format of *address* depends on the
738 address family --- see above.)
739
Georg Brandl116aa622007-08-15 14:28:22 +0000740
741.. method:: socket.connect_ex(address)
742
743 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +0000744 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +0000745 problems, such as "host not found," can still raise exceptions). The error
746 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +0000747 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +0000748 connects.
749
Georg Brandl116aa622007-08-15 14:28:22 +0000750
Antoine Pitrou6e451df2010-08-09 20:39:54 +0000751.. method:: socket.detach()
752
753 Put the socket object into closed state without actually closing the
754 underlying file descriptor. The file descriptor is returned, and can
755 be reused for other purposes.
756
757 .. versionadded:: 3.2
758
759
Georg Brandl116aa622007-08-15 14:28:22 +0000760.. method:: socket.fileno()
761
762 Return the socket's file descriptor (a small integer). This is useful with
763 :func:`select.select`.
764
765 Under Windows the small integer returned by this method cannot be used where a
766 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
767 this limitation.
768
769
770.. method:: socket.getpeername()
771
772 Return the remote address to which the socket is connected. This is useful to
773 find out the port number of a remote IPv4/v6 socket, for instance. (The format
774 of the address returned depends on the address family --- see above.) On some
775 systems this function is not supported.
776
777
778.. method:: socket.getsockname()
779
780 Return the socket's own address. This is useful to find out the port number of
781 an IPv4/v6 socket, for instance. (The format of the address returned depends on
782 the address family --- see above.)
783
784
785.. method:: socket.getsockopt(level, optname[, buflen])
786
787 Return the value of the given socket option (see the Unix man page
788 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
789 are defined in this module. If *buflen* is absent, an integer option is assumed
790 and its integer value is returned by the function. If *buflen* is present, it
791 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000792 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +0000793 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000794 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +0000795
Georg Brandl48310cd2009-01-03 21:18:54 +0000796
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000797.. method:: socket.gettimeout()
798
Ezio Melotti388c9452011-08-14 08:28:57 +0300799 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000800 or ``None`` if no timeout is set. This reflects the last call to
801 :meth:`setblocking` or :meth:`settimeout`.
802
803
Christian Heimesfaf2f632008-01-06 16:59:19 +0000804.. method:: socket.ioctl(control, option)
805
Georg Brandl48310cd2009-01-03 21:18:54 +0000806 :platform: Windows
807
Christian Heimes679db4a2008-01-18 09:56:22 +0000808 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +0000809 interface. Please refer to the `Win32 documentation
810 <http://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
811 information.
Georg Brandl48310cd2009-01-03 21:18:54 +0000812
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000813 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
814 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000815
816.. method:: socket.listen(backlog)
817
818 Listen for connections made to the socket. The *backlog* argument specifies the
Antoine Pitrou1be815a2011-05-10 19:16:29 +0200819 maximum number of queued connections and should be at least 0; the maximum value
820 is system-dependent (usually 5), the minimum value is forced to 0.
Georg Brandl116aa622007-08-15 14:28:22 +0000821
822
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000823.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
824 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000825
826 .. index:: single: I/O control; buffering
827
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000828 Return a :term:`file object` associated with the socket. The exact returned
829 type depends on the arguments given to :meth:`makefile`. These arguments are
830 interpreted the same way as by the built-in :func:`open` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000831
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000832 Closing the file object won't close the socket unless there are no remaining
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000833 references to the socket. The socket must be in blocking mode; it can have
834 a timeout, but the file object's internal buffer may end up in a inconsistent
835 state if a timeout occurs.
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000836
837 .. note::
838
839 On Windows, the file-like object created by :meth:`makefile` cannot be
840 used where a file object with a file descriptor is expected, such as the
841 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000842
Georg Brandl116aa622007-08-15 14:28:22 +0000843
844.. method:: socket.recv(bufsize[, flags])
845
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000846 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +0000847 data received. The maximum amount of data to be received at once is specified
848 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
849 the optional argument *flags*; it defaults to zero.
850
851 .. note::
852
853 For best match with hardware and network realities, the value of *bufsize*
854 should be a relatively small power of 2, for example, 4096.
855
856
857.. method:: socket.recvfrom(bufsize[, flags])
858
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000859 Receive data from the socket. The return value is a pair ``(bytes, address)``
860 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +0000861 address of the socket sending the data. See the Unix manual page
862 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
863 to zero. (The format of *address* depends on the address family --- see above.)
864
865
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000866.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
867
868 Receive normal data (up to *bufsize* bytes) and ancillary data from
869 the socket. The *ancbufsize* argument sets the size in bytes of
870 the internal buffer used to receive the ancillary data; it defaults
871 to 0, meaning that no ancillary data will be received. Appropriate
872 buffer sizes for ancillary data can be calculated using
873 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
874 into the buffer might be truncated or discarded. The *flags*
875 argument defaults to 0 and has the same meaning as for
876 :meth:`recv`.
877
878 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
879 address)``. The *data* item is a :class:`bytes` object holding the
880 non-ancillary data received. The *ancdata* item is a list of zero
881 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
882 the ancillary data (control messages) received: *cmsg_level* and
883 *cmsg_type* are integers specifying the protocol level and
884 protocol-specific type respectively, and *cmsg_data* is a
885 :class:`bytes` object holding the associated data. The *msg_flags*
886 item is the bitwise OR of various flags indicating conditions on
887 the received message; see your system documentation for details.
888 If the receiving socket is unconnected, *address* is the address of
889 the sending socket, if available; otherwise, its value is
890 unspecified.
891
892 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
893 pass file descriptors between processes over an :const:`AF_UNIX`
894 socket. When this facility is used (it is often restricted to
895 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
896 ancillary data, items of the form ``(socket.SOL_SOCKET,
897 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
898 representing the new file descriptors as a binary array of the
899 native C :c:type:`int` type. If :meth:`recvmsg` raises an
900 exception after the system call returns, it will first attempt to
901 close any file descriptors received via this mechanism.
902
903 Some systems do not indicate the truncated length of ancillary data
904 items which have been only partially received. If an item appears
905 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
906 a :exc:`RuntimeWarning`, and will return the part of it which is
907 inside the buffer provided it has not been truncated before the
908 start of its associated data.
909
910 On systems which support the :const:`SCM_RIGHTS` mechanism, the
911 following function will receive up to *maxfds* file descriptors,
912 returning the message data and a list containing the descriptors
913 (while ignoring unexpected conditions such as unrelated control
914 messages being received). See also :meth:`sendmsg`. ::
915
916 import socket, array
917
918 def recv_fds(sock, msglen, maxfds):
919 fds = array.array("i") # Array of ints
920 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
921 for cmsg_level, cmsg_type, cmsg_data in ancdata:
922 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
923 # Append data, ignoring any truncated integers at the end.
924 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
925 return msg, list(fds)
926
927 Availability: most Unix platforms, possibly others.
928
929 .. versionadded:: 3.3
930
931
932.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
933
934 Receive normal data and ancillary data from the socket, behaving as
935 :meth:`recvmsg` would, but scatter the non-ancillary data into a
936 series of buffers instead of returning a new bytes object. The
937 *buffers* argument must be an iterable of objects that export
938 writable buffers (e.g. :class:`bytearray` objects); these will be
939 filled with successive chunks of the non-ancillary data until it
940 has all been written or there are no more buffers. The operating
941 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
942 on the number of buffers that can be used. The *ancbufsize* and
943 *flags* arguments have the same meaning as for :meth:`recvmsg`.
944
945 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
946 address)``, where *nbytes* is the total number of bytes of
947 non-ancillary data written into the buffers, and *ancdata*,
948 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
949
950 Example::
951
952 >>> import socket
953 >>> s1, s2 = socket.socketpair()
954 >>> b1 = bytearray(b'----')
955 >>> b2 = bytearray(b'0123456789')
956 >>> b3 = bytearray(b'--------------')
957 >>> s1.send(b'Mary had a little lamb')
958 22
959 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
960 (22, [], 0, None)
961 >>> [b1, b2, b3]
962 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
963
964 Availability: most Unix platforms, possibly others.
965
966 .. versionadded:: 3.3
967
968
Georg Brandl116aa622007-08-15 14:28:22 +0000969.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
970
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000971 Receive data from the socket, writing it into *buffer* instead of creating a
972 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +0000973 the number of bytes received and *address* is the address of the socket sending
974 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
975 optional argument *flags*; it defaults to zero. (The format of *address*
976 depends on the address family --- see above.)
977
Georg Brandl116aa622007-08-15 14:28:22 +0000978
979.. method:: socket.recv_into(buffer[, nbytes[, flags]])
980
981 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000982 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000983 receive up to the size available in the given buffer. Returns the number of
984 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
985 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +0000986
Georg Brandl116aa622007-08-15 14:28:22 +0000987
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000988.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +0000989
990 Send data to the socket. The socket must be connected to a remote socket. The
991 optional *flags* argument has the same meaning as for :meth:`recv` above.
992 Returns the number of bytes sent. Applications are responsible for checking that
993 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +0800994 application needs to attempt delivery of the remaining data. For further
995 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +0000996
997
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000998.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +0000999
1000 Send data to the socket. The socket must be connected to a remote socket. The
1001 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001002 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001003 either all data has been sent or an error occurs. ``None`` is returned on
1004 success. On error, an exception is raised, and there is no way to determine how
1005 much data, if any, was successfully sent.
1006
1007
Ezio Melottie0add762012-09-14 06:32:35 +03001008.. method:: socket.sendto(bytes, address)
1009 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001010
1011 Send data to the socket. The socket should not be connected to a remote socket,
1012 since the destination socket is specified by *address*. The optional *flags*
1013 argument has the same meaning as for :meth:`recv` above. Return the number of
1014 bytes sent. (The format of *address* depends on the address family --- see
1015 above.)
1016
1017
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001018.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1019
1020 Send normal and ancillary data to the socket, gathering the
1021 non-ancillary data from a series of buffers and concatenating it
1022 into a single message. The *buffers* argument specifies the
1023 non-ancillary data as an iterable of buffer-compatible objects
1024 (e.g. :class:`bytes` objects); the operating system may set a limit
1025 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1026 that can be used. The *ancdata* argument specifies the ancillary
1027 data (control messages) as an iterable of zero or more tuples
1028 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1029 *cmsg_type* are integers specifying the protocol level and
1030 protocol-specific type respectively, and *cmsg_data* is a
1031 buffer-compatible object holding the associated data. Note that
1032 some systems (in particular, systems without :func:`CMSG_SPACE`)
1033 might support sending only one control message per call. The
1034 *flags* argument defaults to 0 and has the same meaning as for
1035 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1036 destination address for the message. The return value is the
1037 number of bytes of non-ancillary data sent.
1038
1039 The following function sends the list of file descriptors *fds*
1040 over an :const:`AF_UNIX` socket, on systems which support the
1041 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1042
1043 import socket, array
1044
1045 def send_fds(sock, msg, fds):
1046 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1047
1048 Availability: most Unix platforms, possibly others.
1049
1050 .. versionadded:: 3.3
1051
1052
Georg Brandl116aa622007-08-15 14:28:22 +00001053.. method:: socket.setblocking(flag)
1054
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001055 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1056 socket is set to non-blocking, else to blocking mode.
1057
1058 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1059
1060 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1061
1062 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001063
1064
1065.. method:: socket.settimeout(value)
1066
1067 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001068 nonnegative floating point number expressing seconds, or ``None``.
1069 If a non-zero value is given, subsequent socket operations will raise a
1070 :exc:`timeout` exception if the timeout period *value* has elapsed before
1071 the operation has completed. If zero is given, the socket is put in
1072 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001073
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001074 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001075
1076
1077.. method:: socket.setsockopt(level, optname, value)
1078
1079 .. index:: module: struct
1080
1081 Set the value of the given socket option (see the Unix manual page
1082 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
1083 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001084 bytes object representing a buffer. In the latter case it is up to the caller to
1085 ensure that the bytestring contains the proper bits (see the optional built-in
1086 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001087
1088
1089.. method:: socket.shutdown(how)
1090
1091 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1092 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1093 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001094 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001095
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001096
1097.. method:: socket.share(process_id)
1098
1099 :platform: Windows
1100
1101 Duplacet a socket and prepare it for sharing with a target process. The
1102 target process must be provided with *process_id*. The resulting bytes object
1103 can then be passed to the target process using some form of interprocess
1104 communication and the socket can be recreated there using :func:`fromshare`.
1105 Once this method has been called, it is safe to close the socket since
1106 the operating system has already duplicated it for the target process.
1107
1108 .. versionadded:: 3.3
1109
1110
Georg Brandl8569e582010-05-19 20:57:08 +00001111Note that there are no methods :meth:`read` or :meth:`write`; use
1112:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001113
1114Socket objects also have these (read-only) attributes that correspond to the
1115values given to the :class:`socket` constructor.
1116
1117
1118.. attribute:: socket.family
1119
1120 The socket family.
1121
Georg Brandl116aa622007-08-15 14:28:22 +00001122
1123.. attribute:: socket.type
1124
1125 The socket type.
1126
Georg Brandl116aa622007-08-15 14:28:22 +00001127
1128.. attribute:: socket.proto
1129
1130 The socket protocol.
1131
Georg Brandl116aa622007-08-15 14:28:22 +00001132
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001133
1134.. _socket-timeouts:
1135
1136Notes on socket timeouts
1137------------------------
1138
1139A socket object can be in one of three modes: blocking, non-blocking, or
1140timeout. Sockets are by default always created in blocking mode, but this
1141can be changed by calling :func:`setdefaulttimeout`.
1142
1143* In *blocking mode*, operations block until complete or the system returns
1144 an error (such as connection timed out).
1145
1146* In *non-blocking mode*, operations fail (with an error that is unfortunately
1147 system-dependent) if they cannot be completed immediately: functions from the
1148 :mod:`select` can be used to know when and whether a socket is available for
1149 reading or writing.
1150
1151* In *timeout mode*, operations fail if they cannot be completed within the
1152 timeout specified for the socket (they raise a :exc:`timeout` exception)
1153 or if the system returns an error.
1154
1155.. note::
1156 At the operating system level, sockets in *timeout mode* are internally set
1157 in non-blocking mode. Also, the blocking and timeout modes are shared between
1158 file descriptors and socket objects that refer to the same network endpoint.
1159 This implementation detail can have visible consequences if e.g. you decide
1160 to use the :meth:`~socket.fileno()` of a socket.
1161
1162Timeouts and the ``connect`` method
1163^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1164
1165The :meth:`~socket.connect` operation is also subject to the timeout
1166setting, and in general it is recommended to call :meth:`~socket.settimeout`
1167before calling :meth:`~socket.connect` or pass a timeout parameter to
1168:meth:`create_connection`. However, the system network stack may also
1169return a connection timeout error of its own regardless of any Python socket
1170timeout setting.
1171
1172Timeouts and the ``accept`` method
1173^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1174
1175If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1176the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1177behaviour depends on settings of the listening socket:
1178
1179* if the listening socket is in *blocking mode* or in *timeout mode*,
1180 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1181
1182* if the listening socket is in *non-blocking mode*, whether the socket
1183 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1184 is operating system-dependent. If you want to ensure cross-platform
1185 behaviour, it is recommended you manually override this setting.
1186
1187
Georg Brandl116aa622007-08-15 14:28:22 +00001188.. _socket-example:
1189
1190Example
1191-------
1192
1193Here are four minimal example programs using the TCP/IP protocol: a server that
1194echoes all data that it receives back (servicing only one client), and a client
1195using it. Note that a server must perform the sequence :func:`socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001196:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1197repeating the :meth:`~socket.accept` to service more than one client), while a
1198client only needs the sequence :func:`socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001199note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1200the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001201:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001202
1203The first two examples support IPv4 only. ::
1204
1205 # Echo server program
1206 import socket
1207
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001208 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001209 PORT = 50007 # Arbitrary non-privileged port
1210 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1211 s.bind((HOST, PORT))
1212 s.listen(1)
1213 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001214 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001215 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001216 data = conn.recv(1024)
1217 if not data: break
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001218 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001219 conn.close()
1220
1221::
1222
1223 # Echo client program
1224 import socket
1225
1226 HOST = 'daring.cwi.nl' # The remote host
1227 PORT = 50007 # The same port as used by the server
1228 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1229 s.connect((HOST, PORT))
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001230 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001231 data = s.recv(1024)
1232 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001233 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001234
1235The next two examples are identical to the above two, but support both IPv4 and
1236IPv6. The server side will listen to the first address family available (it
1237should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1238precedence and the server may not accept IPv4 traffic. The client side will try
1239to connect to the all addresses returned as a result of the name resolution, and
1240sends traffic to the first one connected successfully. ::
1241
1242 # Echo server program
1243 import socket
1244 import sys
1245
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001246 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001247 PORT = 50007 # Arbitrary non-privileged port
1248 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001249 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1250 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001251 af, socktype, proto, canonname, sa = res
1252 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001253 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001254 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001255 s = None
1256 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001257 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001258 s.bind(sa)
1259 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001260 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001261 s.close()
1262 s = None
1263 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001264 break
1265 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001266 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001267 sys.exit(1)
1268 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001269 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001270 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001271 data = conn.recv(1024)
1272 if not data: break
1273 conn.send(data)
1274 conn.close()
1275
1276::
1277
1278 # Echo client program
1279 import socket
1280 import sys
1281
1282 HOST = 'daring.cwi.nl' # The remote host
1283 PORT = 50007 # The same port as used by the server
1284 s = None
1285 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1286 af, socktype, proto, canonname, sa = res
1287 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001288 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001289 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001290 s = None
1291 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001292 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001293 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001294 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001295 s.close()
1296 s = None
1297 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001298 break
1299 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001300 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001301 sys.exit(1)
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001302 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001303 data = s.recv(1024)
1304 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001305 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001306
Georg Brandl48310cd2009-01-03 21:18:54 +00001307
Charles-François Natali47413c12011-10-06 19:47:44 +02001308The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001309sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001310the interface::
1311
1312 import socket
1313
1314 # the public network interface
1315 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001316
Christian Heimesfaf2f632008-01-06 16:59:19 +00001317 # create a raw socket and bind it to the public interface
1318 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1319 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001320
Christian Heimesfaf2f632008-01-06 16:59:19 +00001321 # Include IP headers
1322 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001323
Christian Heimesfaf2f632008-01-06 16:59:19 +00001324 # receive all packages
1325 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001326
Christian Heimesfaf2f632008-01-06 16:59:19 +00001327 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001328 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001329
Christian Heimesc3f30c42008-02-22 16:37:40 +00001330 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001331 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001332
Charles-François Natali47413c12011-10-06 19:47:44 +02001333The last example shows how to use the socket interface to communicate to a CAN
1334network. This example might require special priviledge::
1335
1336 import socket
1337 import struct
1338
1339
Georg Brandla673eb82012-03-04 16:17:05 +01001340 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02001341
1342 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001343 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001344
1345 def build_can_frame(can_id, data):
1346 can_dlc = len(data)
1347 data = data.ljust(8, b'\x00')
1348 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1349
1350 def dissect_can_frame(frame):
1351 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1352 return (can_id, can_dlc, data[:can_dlc])
1353
1354
Georg Brandla673eb82012-03-04 16:17:05 +01001355 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02001356 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1357 s.bind(('vcan0',))
1358
1359 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001360 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001361
1362 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1363
1364 try:
1365 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001366 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001367 print('Error sending CAN frame')
1368
1369 try:
1370 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001371 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001372 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001373
Sandro Tosi172f3742011-09-02 20:06:31 +02001374Running an example several times with too small delay between executions, could
1375lead to this error::
1376
Antoine Pitrou5574c302011-10-12 17:53:43 +02001377 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001378
1379This is because the previous execution has left the socket in a ``TIME_WAIT``
1380state, and can't be immediately reused.
1381
1382There is a :mod:`socket` flag to set, in order to prevent this,
1383:data:`socket.SO_REUSEADDR`::
1384
1385 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1386 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1387 s.bind((HOST, PORT))
1388
1389the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1390``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1391
1392
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001393.. seealso::
1394
1395 For an introduction to socket programming (in C), see the following papers:
1396
1397 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1398
1399 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1400 al,
1401
1402 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1403 PS1:7 and PS1:8). The platform-specific reference material for the various
1404 socket-related system calls are also a valuable source of information on the
1405 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1406 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1407 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.
1408