blob: c2e9f008bb42f8541e238a0f09ad2f3ddc463a53 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`socket` --- Low-level networking interface
2================================================
3
4.. module:: socket
5 :synopsis: Low-level networking interface.
6
7
8This module provides access to the BSD *socket* interface. It is available on
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00009all modern Unix systems, Windows, MacOS, OS/2, and probably additional
Georg Brandl116aa622007-08-15 14:28:22 +000010platforms.
11
12.. note::
13
14 Some behavior may be platform dependent, since calls are made to the operating
15 system socket APIs.
16
Georg Brandl116aa622007-08-15 14:28:22 +000017.. index:: object: socket
18
19The Python interface is a straightforward transliteration of the Unix system
20call and library interface for sockets to Python's object-oriented style: the
Ezio Melottic048d982013-04-17 04:10:26 +030021:func:`.socket` function returns a :dfn:`socket object` whose methods implement
Georg Brandl116aa622007-08-15 14:28:22 +000022the various socket system calls. Parameter types are somewhat higher-level than
23in the C interface: as with :meth:`read` and :meth:`write` operations on Python
24files, buffer allocation on receive operations is automatic, and buffer length
25is implicit on send operations.
26
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000027
Antoine Pitroue1bc8982011-01-02 22:12:22 +000028.. seealso::
29
30 Module :mod:`socketserver`
31 Classes that simplify writing network servers.
32
33 Module :mod:`ssl`
34 A TLS/SSL wrapper for socket objects.
35
36
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000037Socket families
38---------------
39
40Depending on the system and the build options, various socket families
41are supported by this module.
42
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010043The address format required by a particular socket object is automatically
44selected based on the address family specified when the socket object was
45created. Socket addresses are represented as follows:
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000046
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010047- The address of an :const:`AF_UNIX` socket bound to a file system node
48 is represented as a string, using the file system encoding and the
49 ``'surrogateescape'`` error handler (see :pep:`383`). An address in
50 Linux's abstract namespace is returned as a :class:`bytes` object with
51 an initial null byte; note that sockets in this namespace can
52 communicate with normal file system sockets, so programs intended to
53 run on Linux may need to deal with both types of address. A string or
54 :class:`bytes` object can be used for either type of address when
55 passing it as an argument.
56
57 .. versionchanged:: 3.3
58 Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8
59 encoding.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000060
61- A pair ``(host, port)`` is used for the :const:`AF_INET` address family,
62 where *host* is a string representing either a hostname in Internet domain
63 notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``,
Sandro Tosi27b130e2012-06-14 00:37:09 +020064 and *port* is an integer.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000065
66- For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
67 scopeid)`` is used, where *flowinfo* and *scopeid* represent the ``sin6_flowinfo``
68 and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C. For
69 :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for
70 backward compatibility. Note, however, omission of *scopeid* can cause problems
71 in manipulating scoped IPv6 addresses.
72
73- :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``.
74
75- Linux-only support for TIPC is available using the :const:`AF_TIPC`
76 address family. TIPC is an open, non-IP based networked protocol designed
77 for use in clustered computer environments. Addresses are represented by a
78 tuple, and the fields depend on the address type. The general tuple form is
79 ``(addr_type, v1, v2, v3 [, scope])``, where:
80
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010081 - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`,
82 or :const:`TIPC_ADDR_ID`.
83 - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, and
84 :const:`TIPC_NODE_SCOPE`.
85 - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000086 the port identifier, and *v3* should be 0.
87
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010088 If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2*
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000089 is the lower port number, and *v3* is the upper port number.
90
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010091 If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000092 reference, and *v3* should be set to 0.
93
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010094 If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000095 reference, and *v3* should be set to 0.
96
Charles-François Natali47413c12011-10-06 19:47:44 +020097- A tuple ``(interface, )`` is used for the :const:`AF_CAN` address family,
98 where *interface* is a string representing a network interface name like
99 ``'can0'``. The network interface name ``''`` can be used to receive packets
100 from all network interfaces of this family.
101
Martin v. Löwis9d6c6692012-02-03 17:44:58 +0100102- A string or a tuple ``(id, unit)`` is used for the :const:`SYSPROTO_CONTROL`
103 protocol of the :const:`PF_SYSTEM` family. The string is the name of a
104 kernel control using a dynamically-assigned ID. The tuple can be used if ID
105 and unit number of the kernel control are known or if a registered ID is
106 used.
107
108 .. versionadded:: 3.3
109
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
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100141The module :mod:`socket` exports the following elements.
Georg Brandl116aa622007-08-15 14:28:22 +0000142
143
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100144Exceptions
145^^^^^^^^^^
146
Georg Brandl116aa622007-08-15 14:28:22 +0000147.. exception:: error
148
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200149 A deprecated alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000150
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200151 .. versionchanged:: 3.3
152 Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000153
154
155.. exception:: herror
156
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200157 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000158 address-related errors, i.e. for functions that use *h_errno* in the POSIX
159 C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
160 The accompanying value is a pair ``(h_errno, string)`` representing an
161 error returned by a library call. *h_errno* is a numeric value, while
162 *string* represents the description of *h_errno*, as returned by the
163 :c:func:`hstrerror` C function.
Georg Brandl116aa622007-08-15 14:28:22 +0000164
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200165 .. versionchanged:: 3.3
166 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000167
168.. exception:: gaierror
169
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200170 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000171 address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
172 The accompanying value is a pair ``(error, string)`` representing an error
173 returned by a library call. *string* represents the description of
174 *error*, as returned by the :c:func:`gai_strerror` C function. The
175 numeric *error* value will match one of the :const:`EAI_\*` constants
176 defined in this module.
Georg Brandl116aa622007-08-15 14:28:22 +0000177
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200178 .. versionchanged:: 3.3
179 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000180
181.. exception:: timeout
182
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200183 A subclass of :exc:`OSError`, this exception is raised when a timeout
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000184 occurs on a socket which has had timeouts enabled via a prior call to
185 :meth:`~socket.settimeout` (or implicitly through
186 :func:`~socket.setdefaulttimeout`). The accompanying value is a string
187 whose value is currently always "timed out".
Georg Brandl116aa622007-08-15 14:28:22 +0000188
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200189 .. versionchanged:: 3.3
190 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000191
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100192
193Constants
194^^^^^^^^^
195
Georg Brandl116aa622007-08-15 14:28:22 +0000196.. data:: AF_UNIX
197 AF_INET
198 AF_INET6
199
200 These constants represent the address (and protocol) families, used for the
Ezio Melottic048d982013-04-17 04:10:26 +0300201 first argument to :func:`.socket`. If the :const:`AF_UNIX` constant is not
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000202 defined then this protocol is unsupported. More constants may be available
203 depending on the system.
Georg Brandl116aa622007-08-15 14:28:22 +0000204
205
206.. data:: SOCK_STREAM
207 SOCK_DGRAM
208 SOCK_RAW
209 SOCK_RDM
210 SOCK_SEQPACKET
211
212 These constants represent the socket types, used for the second argument to
Ezio Melottic048d982013-04-17 04:10:26 +0300213 :func:`.socket`. More constants may be available depending on the system.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000214 (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
215 useful.)
Georg Brandl116aa622007-08-15 14:28:22 +0000216
Antoine Pitroub1c54962010-10-14 15:05:38 +0000217.. data:: SOCK_CLOEXEC
218 SOCK_NONBLOCK
219
220 These two constants, if defined, can be combined with the socket types and
221 allow you to set some flags atomically (thus avoiding possible race
222 conditions and the need for separate calls).
223
224 .. seealso::
225
226 `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
227 for a more thorough explanation.
228
229 Availability: Linux >= 2.6.27.
230
231 .. versionadded:: 3.2
Georg Brandl116aa622007-08-15 14:28:22 +0000232
233.. data:: SO_*
234 SOMAXCONN
235 MSG_*
236 SOL_*
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000237 SCM_*
Georg Brandl116aa622007-08-15 14:28:22 +0000238 IPPROTO_*
239 IPPORT_*
240 INADDR_*
241 IP_*
242 IPV6_*
243 EAI_*
244 AI_*
245 NI_*
246 TCP_*
247
248 Many constants of these forms, documented in the Unix documentation on sockets
249 and/or the IP protocol, are also defined in the socket module. They are
250 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
251 methods of socket objects. In most cases, only those symbols that are defined
252 in the Unix header files are defined; for a few symbols, default values are
253 provided.
254
Charles-François Natali47413c12011-10-06 19:47:44 +0200255.. data:: AF_CAN
256 PF_CAN
257 SOL_CAN_*
258 CAN_*
259
260 Many constants of these forms, documented in the Linux documentation, are
261 also defined in the socket module.
262
263 Availability: Linux >= 2.6.25.
264
265 .. versionadded:: 3.3
266
Charles-François Natali773e42d2013-02-05 19:42:01 +0100267.. data:: CAN_BCM
268 CAN_BCM_*
269
270 CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol.
271 Broadcast manager constants, documented in the Linux documentation, are also
272 defined in the socket module.
273
274 Availability: Linux >= 2.6.25.
275
276 .. versionadded:: 3.4
Charles-François Natali47413c12011-10-06 19:47:44 +0200277
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100278.. data:: AF_RDS
279 PF_RDS
280 SOL_RDS
281 RDS_*
282
283 Many constants of these forms, documented in the Linux documentation, are
284 also defined in the socket module.
285
286 Availability: Linux >= 2.6.30.
287
288 .. versionadded:: 3.3
289
290
Christian Heimesfaf2f632008-01-06 16:59:19 +0000291.. data:: SIO_*
292 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000293
Christian Heimesfaf2f632008-01-06 16:59:19 +0000294 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300295 :meth:`~socket.socket.ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000296
Georg Brandl116aa622007-08-15 14:28:22 +0000297
Christian Heimes043d6f62008-01-07 17:19:16 +0000298.. data:: TIPC_*
299
300 TIPC related constants, matching the ones exported by the C socket API. See
301 the TIPC documentation for more information.
302
Giampaolo Rodola'80e1c432013-05-21 21:02:04 +0200303.. data:: AF_LINK
304
305 Availability: BSD, OSX.
306
307 .. versionadded:: 3.4
Christian Heimes043d6f62008-01-07 17:19:16 +0000308
Georg Brandl116aa622007-08-15 14:28:22 +0000309.. data:: has_ipv6
310
311 This constant contains a boolean value which indicates if IPv6 is supported on
312 this platform.
313
Georg Brandl116aa622007-08-15 14:28:22 +0000314
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100315Functions
316^^^^^^^^^
317
318Creating sockets
319''''''''''''''''
320
321The following functions all create :ref:`socket objects <socket-objects>`.
322
323
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100324.. function:: socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100325
326 Create a new socket using the given address family, socket type and protocol
327 number. The address family should be :const:`AF_INET` (the default),
328 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
329 socket type should be :const:`SOCK_STREAM` (the default),
330 :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100331 constants. The protocol number is usually zero and may be omitted or in the
332 case where the address family is :const:`AF_CAN` the protocol should be one
333 of :const:`CAN_RAW` or :const:`CAN_BCM`.
334
335 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100336
337 .. versionchanged:: 3.3
338 The AF_CAN family was added.
339 The AF_RDS family was added.
340
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100341 .. versionchanged:: 3.4
342 The CAN_BCM protocol was added.
343
344 .. versionchanged:: 3.4
345 The returned socket is now non-inheritable.
346
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100347
348.. function:: socketpair([family[, type[, proto]]])
349
350 Build a pair of connected socket objects using the given address family, socket
351 type, and protocol number. Address family, socket type, and protocol number are
352 as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
353 if defined on the platform; otherwise, the default is :const:`AF_INET`.
354 Availability: Unix.
355
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100356 The newly created sockets are :ref:`non-inheritable <fd_inheritance>`.
357
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100358 .. versionchanged:: 3.2
359 The returned socket objects now support the whole socket API, rather
360 than a subset.
361
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100362 .. versionchanged:: 3.4
363 The returned sockets are now non-inheritable.
364
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100365
Gregory P. Smithb4066372010-01-03 03:28:29 +0000366.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000367
Antoine Pitrou889a5102012-01-12 08:06:19 +0100368 Connect to a TCP service listening on the Internet *address* (a 2-tuple
369 ``(host, port)``), and return the socket object. This is a higher-level
370 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
371 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
372 and then try to connect to all possible addresses in turn until a
373 connection succeeds. This makes it easy to write clients that are
374 compatible to both IPv4 and IPv6.
375
376 Passing the optional *timeout* parameter will set the timeout on the
377 socket instance before attempting to connect. If no *timeout* is
378 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000379 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000380
Gregory P. Smithb4066372010-01-03 03:28:29 +0000381 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
382 socket to bind to as its source address before connecting. If host or port
383 are '' or 0 respectively the OS default behavior will be used.
384
385 .. versionchanged:: 3.2
386 *source_address* was added.
387
Giampaolo Rodolàb383dbb2010-09-08 22:44:12 +0000388 .. versionchanged:: 3.2
389 support for the :keyword:`with` statement was added.
390
Georg Brandl116aa622007-08-15 14:28:22 +0000391
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100392.. function:: fromfd(fd, family, type, proto=0)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100393
394 Duplicate the file descriptor *fd* (an integer as returned by a file object's
395 :meth:`fileno` method) and build a socket object from the result. Address
396 family, socket type and protocol number are as for the :func:`.socket` function
397 above. The file descriptor should refer to a socket, but this is not checked ---
398 subsequent operations on the object may fail if the file descriptor is invalid.
399 This function is rarely needed, but can be used to get or set socket options on
400 a socket passed to a program as standard input or output (such as a server
401 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
402
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100403 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
404
405 .. versionchanged:: 3.4
406 The returned socket is now non-inheritable.
407
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100408
409.. function:: fromshare(data)
410
411 Instantiate a socket from data obtained from the :meth:`socket.share`
412 method. The socket is assumed to be in blocking mode.
413
414 Availability: Windows.
415
416 .. versionadded:: 3.3
417
418
419.. data:: SocketType
420
421 This is a Python type object that represents the socket object type. It is the
422 same as ``type(socket(...))``.
423
424
425Other functions
426'''''''''''''''
427
428The :mod:`socket` module also offers various network-related services:
429
430
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000431.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000432
Antoine Pitrou91035972010-05-31 17:04:40 +0000433 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
434 all the necessary arguments for creating a socket connected to that service.
435 *host* is a domain name, a string representation of an IPv4/v6 address
436 or ``None``. *port* is a string service name such as ``'http'``, a numeric
437 port number or ``None``. By passing ``None`` as the value of *host*
438 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000439
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000440 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000441 in order to narrow the list of addresses returned. Passing zero as a
442 value for each of these arguments selects the full range of results.
443 The *flags* argument can be one or several of the ``AI_*`` constants,
444 and will influence how results are computed and returned.
445 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
446 and will raise an error if *host* is a domain name.
447
448 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000449
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000450 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000451
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000452 In these tuples, *family*, *type*, *proto* are all integers and are
Ezio Melottic048d982013-04-17 04:10:26 +0300453 meant to be passed to the :func:`.socket` function. *canonname* will be
Antoine Pitrou91035972010-05-31 17:04:40 +0000454 a string representing the canonical name of the *host* if
455 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
456 will be empty. *sockaddr* is a tuple describing a socket address, whose
457 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
458 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
459 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
460 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000461
Antoine Pitrou91035972010-05-31 17:04:40 +0000462 The following example fetches address information for a hypothetical TCP
463 connection to ``www.python.org`` on port 80 (results may differ on your
464 system if IPv6 isn't enabled)::
465
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000466 >>> socket.getaddrinfo("www.python.org", 80, proto=socket.SOL_TCP)
Antoine Pitrou91035972010-05-31 17:04:40 +0000467 [(2, 1, 6, '', ('82.94.164.162', 80)),
468 (10, 1, 6, '', ('2001:888:2000:d::a2', 80, 0, 0))]
Georg Brandl116aa622007-08-15 14:28:22 +0000469
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000470 .. versionchanged:: 3.2
471 parameters can now be passed as single keyword arguments.
472
Georg Brandl116aa622007-08-15 14:28:22 +0000473.. function:: getfqdn([name])
474
475 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
476 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000477 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000478 host, if available. The first name which includes a period is selected. In
479 case no fully qualified domain name is available, the hostname as returned by
480 :func:`gethostname` is returned.
481
Georg Brandl116aa622007-08-15 14:28:22 +0000482
483.. function:: gethostbyname(hostname)
484
485 Translate a host name to IPv4 address format. The IPv4 address is returned as a
486 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
487 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
488 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
489 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
490
491
492.. function:: gethostbyname_ex(hostname)
493
494 Translate a host name to IPv4 address format, extended interface. Return a
495 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
496 host name responding to the given *ip_address*, *aliaslist* is a (possibly
497 empty) list of alternative host names for the same address, and *ipaddrlist* is
498 a list of IPv4 addresses for the same interface on the same host (often but not
499 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
500 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
501 stack support.
502
503
504.. function:: gethostname()
505
506 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000507 interpreter is currently executing.
508
509 If you want to know the current machine's IP address, you may want to use
510 ``gethostbyname(gethostname())``. This operation assumes that there is a
511 valid address-to-host mapping for the host, and the assumption does not
512 always hold.
513
514 Note: :func:`gethostname` doesn't always return the fully qualified domain
515 name; use ``getfqdn()`` (see above).
Georg Brandl116aa622007-08-15 14:28:22 +0000516
517
518.. function:: gethostbyaddr(ip_address)
519
520 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
521 primary host name responding to the given *ip_address*, *aliaslist* is a
522 (possibly empty) list of alternative host names for the same address, and
523 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
524 host (most likely containing only a single address). To find the fully qualified
525 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
526 both IPv4 and IPv6.
527
528
529.. function:: getnameinfo(sockaddr, flags)
530
531 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
532 on the settings of *flags*, the result can contain a fully-qualified domain name
533 or numeric address representation in *host*. Similarly, *port* can contain a
534 string port name or a numeric port number.
535
Georg Brandl116aa622007-08-15 14:28:22 +0000536
537.. function:: getprotobyname(protocolname)
538
539 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
Ezio Melottic048d982013-04-17 04:10:26 +0300540 suitable for passing as the (optional) third argument to the :func:`.socket`
Georg Brandl116aa622007-08-15 14:28:22 +0000541 function. This is usually only needed for sockets opened in "raw" mode
542 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
543 automatically if the protocol is omitted or zero.
544
545
546.. function:: getservbyname(servicename[, protocolname])
547
548 Translate an Internet service name and protocol name to a port number for that
549 service. The optional protocol name, if given, should be ``'tcp'`` or
550 ``'udp'``, otherwise any protocol will match.
551
552
553.. function:: getservbyport(port[, protocolname])
554
555 Translate an Internet port number and protocol name to a service name for that
556 service. The optional protocol name, if given, should be ``'tcp'`` or
557 ``'udp'``, otherwise any protocol will match.
558
559
Georg Brandl116aa622007-08-15 14:28:22 +0000560.. function:: ntohl(x)
561
562 Convert 32-bit positive integers from network to host byte order. On machines
563 where the host byte order is the same as network byte order, this is a no-op;
564 otherwise, it performs a 4-byte swap operation.
565
566
567.. function:: ntohs(x)
568
569 Convert 16-bit positive integers from network to host byte order. On machines
570 where the host byte order is the same as network byte order, this is a no-op;
571 otherwise, it performs a 2-byte swap operation.
572
573
574.. function:: htonl(x)
575
576 Convert 32-bit positive integers from host to network byte order. On machines
577 where the host byte order is the same as network byte order, this is a no-op;
578 otherwise, it performs a 4-byte swap operation.
579
580
581.. function:: htons(x)
582
583 Convert 16-bit positive integers from host to network byte order. On machines
584 where the host byte order is the same as network byte order, this is a no-op;
585 otherwise, it performs a 2-byte swap operation.
586
587
588.. function:: inet_aton(ip_string)
589
590 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000591 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000592 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000593 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000594 for the 32-bit packed binary this function returns.
595
Georg Brandlf5123ef2009-06-04 10:28:36 +0000596 :func:`inet_aton` also accepts strings with less than three dots; see the
597 Unix manual page :manpage:`inet(3)` for details.
598
Georg Brandl116aa622007-08-15 14:28:22 +0000599 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200600 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000601 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000602
Georg Brandl5f259722009-05-04 20:50:30 +0000603 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000604 instead for IPv4/v6 dual stack support.
605
606
607.. function:: inet_ntoa(packed_ip)
608
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000609 Convert a 32-bit packed IPv4 address (a bytes object four characters in
610 length) to its standard dotted-quad string representation (for example,
611 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000612 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000613 is the C type for the 32-bit packed binary data this function takes as an
614 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000615
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000616 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200617 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000618 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000619 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000620
621
622.. function:: inet_pton(address_family, ip_string)
623
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000624 Convert an IP address from its family-specific string format to a packed,
625 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000626 calls for an object of type :c:type:`struct in_addr` (similar to
627 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000628
629 Supported values for *address_family* are currently :const:`AF_INET` and
630 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200631 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000632 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000633 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000634
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900635 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000636
Georg Brandl116aa622007-08-15 14:28:22 +0000637
638.. function:: inet_ntop(address_family, packed_ip)
639
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000640 Convert a packed IP address (a bytes object of some number of characters) to its
Georg Brandl116aa622007-08-15 14:28:22 +0000641 standard, family-specific string representation (for example, ``'7.10.0.5'`` or
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000642 ``'5aef:2b::8'``). :func:`inet_ntop` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000643 returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`)
644 or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000645
646 Supported values for *address_family* are currently :const:`AF_INET` and
647 :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the
648 specified address family, :exc:`ValueError` will be raised. A
Antoine Pitrou5574c302011-10-12 17:53:43 +0200649 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000650
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900651 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000652
Georg Brandl116aa622007-08-15 14:28:22 +0000653
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000654..
655 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
656 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
657 interface, in which struct msghdr has no msg_control or
658 msg_controllen members, is not currently supported.
659
660.. function:: CMSG_LEN(length)
661
662 Return the total length, without trailing padding, of an ancillary
663 data item with associated data of the given *length*. This value
664 can often be used as the buffer size for :meth:`~socket.recvmsg` to
665 receive a single item of ancillary data, but :rfc:`3542` requires
666 portable applications to use :func:`CMSG_SPACE` and thus include
667 space for padding, even when the item will be the last in the
668 buffer. Raises :exc:`OverflowError` if *length* is outside the
669 permissible range of values.
670
671 Availability: most Unix platforms, possibly others.
672
673 .. versionadded:: 3.3
674
675
676.. function:: CMSG_SPACE(length)
677
678 Return the buffer size needed for :meth:`~socket.recvmsg` to
679 receive an ancillary data item with associated data of the given
680 *length*, along with any trailing padding. The buffer space needed
681 to receive multiple items is the sum of the :func:`CMSG_SPACE`
682 values for their associated data lengths. Raises
683 :exc:`OverflowError` if *length* is outside the permissible range
684 of values.
685
686 Note that some systems might support ancillary data without
687 providing this function. Also note that setting the buffer size
688 using the results of this function may not precisely limit the
689 amount of ancillary data that can be received, since additional
690 data may be able to fit into the padding area.
691
692 Availability: most Unix platforms, possibly others.
693
694 .. versionadded:: 3.3
695
696
Georg Brandl116aa622007-08-15 14:28:22 +0000697.. function:: getdefaulttimeout()
698
Ezio Melotti388c9452011-08-14 08:28:57 +0300699 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000700 of ``None`` indicates that new socket objects have no timeout. When the socket
701 module is first imported, the default is ``None``.
702
Georg Brandl116aa622007-08-15 14:28:22 +0000703
704.. function:: setdefaulttimeout(timeout)
705
Ezio Melotti388c9452011-08-14 08:28:57 +0300706 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000707 the socket module is first imported, the default is ``None``. See
708 :meth:`~socket.settimeout` for possible values and their respective
709 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000710
Georg Brandl116aa622007-08-15 14:28:22 +0000711
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000712.. function:: sethostname(name)
713
714 Set the machine's hostname to *name*. This will raise a
Antoine Pitrou5574c302011-10-12 17:53:43 +0200715 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000716
717 Availability: Unix.
718
719 .. versionadded:: 3.3
720
721
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700722.. function:: if_nameindex()
723
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700724 Return a list of network interface information
725 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200726 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700727
728 Availability: Unix.
729
730 .. versionadded:: 3.3
731
732
733.. function:: if_nametoindex(if_name)
734
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700735 Return a network interface index number corresponding to an
736 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200737 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700738
739 Availability: Unix.
740
741 .. versionadded:: 3.3
742
743
744.. function:: if_indextoname(if_index)
745
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700746 Return a network interface name corresponding to a
747 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200748 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700749
750 Availability: Unix.
751
752 .. versionadded:: 3.3
753
754
Georg Brandl116aa622007-08-15 14:28:22 +0000755.. _socket-objects:
756
757Socket Objects
758--------------
759
Antoine Pitroue3658a72013-12-04 21:02:42 +0100760Socket objects have the following methods. Except for
761:meth:`~socket.makefile`, these correspond to Unix system calls applicable
762to sockets.
Georg Brandl116aa622007-08-15 14:28:22 +0000763
764
765.. method:: socket.accept()
766
767 Accept a connection. The socket must be bound to an address and listening for
768 connections. The return value is a pair ``(conn, address)`` where *conn* is a
769 *new* socket object usable to send and receive data on the connection, and
770 *address* is the address bound to the socket on the other end of the connection.
771
Victor Stinnerdaf45552013-08-28 00:53:59 +0200772 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
773
774 .. versionchanged:: 3.4
775 The socket is now non-inheritable.
776
Georg Brandl116aa622007-08-15 14:28:22 +0000777
778.. method:: socket.bind(address)
779
780 Bind the socket to *address*. The socket must not already be bound. (The format
781 of *address* depends on the address family --- see above.)
782
Georg Brandl116aa622007-08-15 14:28:22 +0000783
784.. method:: socket.close()
785
Antoine Pitroue3658a72013-12-04 21:02:42 +0100786 Mark the socket closed. The underlying system resource (e.g. a file
787 descriptor) is also closed when all file objects from :meth:`makefile()`
788 are closed. Once that happens, all future operations on the socket
789 object will fail. The remote end will receive no more data (after
790 queued data is flushed).
791
792 Sockets are automatically closed when they are garbage-collected, but
793 it is recommended to :meth:`close` them explicitly, or to use a
794 :keyword:`with` statement around them.
Georg Brandl116aa622007-08-15 14:28:22 +0000795
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000796 .. note::
797 :meth:`close()` releases the resource associated with a connection but
798 does not necessarily close the connection immediately. If you want
799 to close the connection in a timely fashion, call :meth:`shutdown()`
800 before :meth:`close()`.
801
Georg Brandl116aa622007-08-15 14:28:22 +0000802
803.. method:: socket.connect(address)
804
805 Connect to a remote socket at *address*. (The format of *address* depends on the
806 address family --- see above.)
807
Georg Brandl116aa622007-08-15 14:28:22 +0000808
809.. method:: socket.connect_ex(address)
810
811 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +0000812 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +0000813 problems, such as "host not found," can still raise exceptions). The error
814 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +0000815 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +0000816 connects.
817
Georg Brandl116aa622007-08-15 14:28:22 +0000818
Antoine Pitrou6e451df2010-08-09 20:39:54 +0000819.. method:: socket.detach()
820
821 Put the socket object into closed state without actually closing the
822 underlying file descriptor. The file descriptor is returned, and can
823 be reused for other purposes.
824
825 .. versionadded:: 3.2
826
827
Victor Stinnerdaf45552013-08-28 00:53:59 +0200828.. method:: socket.dup()
829
830 Duplicate the socket.
831
832 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
833
834 .. versionchanged:: 3.4
835 The socket is now non-inheritable.
836
837
Georg Brandl116aa622007-08-15 14:28:22 +0000838.. method:: socket.fileno()
839
840 Return the socket's file descriptor (a small integer). This is useful with
841 :func:`select.select`.
842
843 Under Windows the small integer returned by this method cannot be used where a
844 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
845 this limitation.
846
847
Victor Stinnerdaf45552013-08-28 00:53:59 +0200848.. method:: socket.get_inheritable()
849
850 Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file
851 descriptor or socket's handle: ``True`` if the socket can be inherited in
852 child processes, ``False`` if it cannot.
853
854 .. versionadded:: 3.4
855
856
Georg Brandl116aa622007-08-15 14:28:22 +0000857.. method:: socket.getpeername()
858
859 Return the remote address to which the socket is connected. This is useful to
860 find out the port number of a remote IPv4/v6 socket, for instance. (The format
861 of the address returned depends on the address family --- see above.) On some
862 systems this function is not supported.
863
864
865.. method:: socket.getsockname()
866
867 Return the socket's own address. This is useful to find out the port number of
868 an IPv4/v6 socket, for instance. (The format of the address returned depends on
869 the address family --- see above.)
870
871
872.. method:: socket.getsockopt(level, optname[, buflen])
873
874 Return the value of the given socket option (see the Unix man page
875 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
876 are defined in this module. If *buflen* is absent, an integer option is assumed
877 and its integer value is returned by the function. If *buflen* is present, it
878 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000879 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +0000880 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000881 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +0000882
Georg Brandl48310cd2009-01-03 21:18:54 +0000883
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000884.. method:: socket.gettimeout()
885
Ezio Melotti388c9452011-08-14 08:28:57 +0300886 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000887 or ``None`` if no timeout is set. This reflects the last call to
888 :meth:`setblocking` or :meth:`settimeout`.
889
890
Christian Heimesfaf2f632008-01-06 16:59:19 +0000891.. method:: socket.ioctl(control, option)
892
Georg Brandl48310cd2009-01-03 21:18:54 +0000893 :platform: Windows
894
Christian Heimes679db4a2008-01-18 09:56:22 +0000895 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +0000896 interface. Please refer to the `Win32 documentation
897 <http://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
898 information.
Georg Brandl48310cd2009-01-03 21:18:54 +0000899
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000900 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
901 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000902
903.. method:: socket.listen(backlog)
904
905 Listen for connections made to the socket. The *backlog* argument specifies the
Antoine Pitrou1be815a2011-05-10 19:16:29 +0200906 maximum number of queued connections and should be at least 0; the maximum value
907 is system-dependent (usually 5), the minimum value is forced to 0.
Georg Brandl116aa622007-08-15 14:28:22 +0000908
909
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000910.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
911 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000912
913 .. index:: single: I/O control; buffering
914
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000915 Return a :term:`file object` associated with the socket. The exact returned
916 type depends on the arguments given to :meth:`makefile`. These arguments are
917 interpreted the same way as by the built-in :func:`open` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000918
Antoine Pitroue3658a72013-12-04 21:02:42 +0100919 The socket must be in blocking mode; it can have a timeout, but the file
920 object's internal buffer may end up in a inconsistent state if a timeout
921 occurs.
922
923 Closing the file object returned by :meth:`makefile` won't close the
924 original socket unless all other file objects have been closed and
925 :meth:`socket.close` has been called on the socket object.
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000926
927 .. note::
928
929 On Windows, the file-like object created by :meth:`makefile` cannot be
930 used where a file object with a file descriptor is expected, such as the
931 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000932
Georg Brandl116aa622007-08-15 14:28:22 +0000933
934.. method:: socket.recv(bufsize[, flags])
935
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000936 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +0000937 data received. The maximum amount of data to be received at once is specified
938 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
939 the optional argument *flags*; it defaults to zero.
940
941 .. note::
942
943 For best match with hardware and network realities, the value of *bufsize*
944 should be a relatively small power of 2, for example, 4096.
945
946
947.. method:: socket.recvfrom(bufsize[, flags])
948
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000949 Receive data from the socket. The return value is a pair ``(bytes, address)``
950 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +0000951 address of the socket sending the data. See the Unix manual page
952 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
953 to zero. (The format of *address* depends on the address family --- see above.)
954
955
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000956.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
957
958 Receive normal data (up to *bufsize* bytes) and ancillary data from
959 the socket. The *ancbufsize* argument sets the size in bytes of
960 the internal buffer used to receive the ancillary data; it defaults
961 to 0, meaning that no ancillary data will be received. Appropriate
962 buffer sizes for ancillary data can be calculated using
963 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
964 into the buffer might be truncated or discarded. The *flags*
965 argument defaults to 0 and has the same meaning as for
966 :meth:`recv`.
967
968 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
969 address)``. The *data* item is a :class:`bytes` object holding the
970 non-ancillary data received. The *ancdata* item is a list of zero
971 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
972 the ancillary data (control messages) received: *cmsg_level* and
973 *cmsg_type* are integers specifying the protocol level and
974 protocol-specific type respectively, and *cmsg_data* is a
975 :class:`bytes` object holding the associated data. The *msg_flags*
976 item is the bitwise OR of various flags indicating conditions on
977 the received message; see your system documentation for details.
978 If the receiving socket is unconnected, *address* is the address of
979 the sending socket, if available; otherwise, its value is
980 unspecified.
981
982 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
983 pass file descriptors between processes over an :const:`AF_UNIX`
984 socket. When this facility is used (it is often restricted to
985 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
986 ancillary data, items of the form ``(socket.SOL_SOCKET,
987 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
988 representing the new file descriptors as a binary array of the
989 native C :c:type:`int` type. If :meth:`recvmsg` raises an
990 exception after the system call returns, it will first attempt to
991 close any file descriptors received via this mechanism.
992
993 Some systems do not indicate the truncated length of ancillary data
994 items which have been only partially received. If an item appears
995 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
996 a :exc:`RuntimeWarning`, and will return the part of it which is
997 inside the buffer provided it has not been truncated before the
998 start of its associated data.
999
1000 On systems which support the :const:`SCM_RIGHTS` mechanism, the
1001 following function will receive up to *maxfds* file descriptors,
1002 returning the message data and a list containing the descriptors
1003 (while ignoring unexpected conditions such as unrelated control
1004 messages being received). See also :meth:`sendmsg`. ::
1005
1006 import socket, array
1007
1008 def recv_fds(sock, msglen, maxfds):
1009 fds = array.array("i") # Array of ints
1010 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1011 for cmsg_level, cmsg_type, cmsg_data in ancdata:
1012 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
1013 # Append data, ignoring any truncated integers at the end.
1014 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
1015 return msg, list(fds)
1016
1017 Availability: most Unix platforms, possibly others.
1018
1019 .. versionadded:: 3.3
1020
1021
1022.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1023
1024 Receive normal data and ancillary data from the socket, behaving as
1025 :meth:`recvmsg` would, but scatter the non-ancillary data into a
1026 series of buffers instead of returning a new bytes object. The
1027 *buffers* argument must be an iterable of objects that export
1028 writable buffers (e.g. :class:`bytearray` objects); these will be
1029 filled with successive chunks of the non-ancillary data until it
1030 has all been written or there are no more buffers. The operating
1031 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1032 on the number of buffers that can be used. The *ancbufsize* and
1033 *flags* arguments have the same meaning as for :meth:`recvmsg`.
1034
1035 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1036 address)``, where *nbytes* is the total number of bytes of
1037 non-ancillary data written into the buffers, and *ancdata*,
1038 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1039
1040 Example::
1041
1042 >>> import socket
1043 >>> s1, s2 = socket.socketpair()
1044 >>> b1 = bytearray(b'----')
1045 >>> b2 = bytearray(b'0123456789')
1046 >>> b3 = bytearray(b'--------------')
1047 >>> s1.send(b'Mary had a little lamb')
1048 22
1049 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1050 (22, [], 0, None)
1051 >>> [b1, b2, b3]
1052 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1053
1054 Availability: most Unix platforms, possibly others.
1055
1056 .. versionadded:: 3.3
1057
1058
Georg Brandl116aa622007-08-15 14:28:22 +00001059.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1060
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001061 Receive data from the socket, writing it into *buffer* instead of creating a
1062 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +00001063 the number of bytes received and *address* is the address of the socket sending
1064 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
1065 optional argument *flags*; it defaults to zero. (The format of *address*
1066 depends on the address family --- see above.)
1067
Georg Brandl116aa622007-08-15 14:28:22 +00001068
1069.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1070
1071 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001072 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +00001073 receive up to the size available in the given buffer. Returns the number of
1074 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
1075 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001076
Georg Brandl116aa622007-08-15 14:28:22 +00001077
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001078.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001079
1080 Send data to the socket. The socket must be connected to a remote socket. The
1081 optional *flags* argument has the same meaning as for :meth:`recv` above.
1082 Returns the number of bytes sent. Applications are responsible for checking that
1083 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001084 application needs to attempt delivery of the remaining data. For further
1085 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +00001086
1087
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001088.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001089
1090 Send data to the socket. The socket must be connected to a remote socket. The
1091 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001092 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001093 either all data has been sent or an error occurs. ``None`` is returned on
1094 success. On error, an exception is raised, and there is no way to determine how
1095 much data, if any, was successfully sent.
1096
1097
Ezio Melottie0add762012-09-14 06:32:35 +03001098.. method:: socket.sendto(bytes, address)
1099 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001100
1101 Send data to the socket. The socket should not be connected to a remote socket,
1102 since the destination socket is specified by *address*. The optional *flags*
1103 argument has the same meaning as for :meth:`recv` above. Return the number of
1104 bytes sent. (The format of *address* depends on the address family --- see
1105 above.)
1106
1107
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001108.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1109
1110 Send normal and ancillary data to the socket, gathering the
1111 non-ancillary data from a series of buffers and concatenating it
1112 into a single message. The *buffers* argument specifies the
1113 non-ancillary data as an iterable of buffer-compatible objects
1114 (e.g. :class:`bytes` objects); the operating system may set a limit
1115 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1116 that can be used. The *ancdata* argument specifies the ancillary
1117 data (control messages) as an iterable of zero or more tuples
1118 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1119 *cmsg_type* are integers specifying the protocol level and
1120 protocol-specific type respectively, and *cmsg_data* is a
1121 buffer-compatible object holding the associated data. Note that
1122 some systems (in particular, systems without :func:`CMSG_SPACE`)
1123 might support sending only one control message per call. The
1124 *flags* argument defaults to 0 and has the same meaning as for
1125 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1126 destination address for the message. The return value is the
1127 number of bytes of non-ancillary data sent.
1128
1129 The following function sends the list of file descriptors *fds*
1130 over an :const:`AF_UNIX` socket, on systems which support the
1131 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1132
1133 import socket, array
1134
1135 def send_fds(sock, msg, fds):
1136 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1137
1138 Availability: most Unix platforms, possibly others.
1139
1140 .. versionadded:: 3.3
1141
1142
Victor Stinnerdaf45552013-08-28 00:53:59 +02001143.. method:: socket.set_inheritable(inheritable)
1144
1145 Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1146 descriptor or socket's handle.
1147
1148 .. versionadded:: 3.4
1149
1150
Georg Brandl116aa622007-08-15 14:28:22 +00001151.. method:: socket.setblocking(flag)
1152
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001153 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1154 socket is set to non-blocking, else to blocking mode.
1155
1156 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1157
1158 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1159
1160 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001161
1162
1163.. method:: socket.settimeout(value)
1164
1165 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001166 nonnegative floating point number expressing seconds, or ``None``.
1167 If a non-zero value is given, subsequent socket operations will raise a
1168 :exc:`timeout` exception if the timeout period *value* has elapsed before
1169 the operation has completed. If zero is given, the socket is put in
1170 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001171
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001172 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001173
1174
1175.. method:: socket.setsockopt(level, optname, value)
1176
1177 .. index:: module: struct
1178
1179 Set the value of the given socket option (see the Unix manual page
1180 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
1181 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001182 bytes object representing a buffer. In the latter case it is up to the caller to
1183 ensure that the bytestring contains the proper bits (see the optional built-in
1184 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001185
1186
1187.. method:: socket.shutdown(how)
1188
1189 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1190 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1191 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001192 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001193
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001194
1195.. method:: socket.share(process_id)
1196
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001197 Duplicate a socket and prepare it for sharing with a target process. The
1198 target process must be provided with *process_id*. The resulting bytes object
1199 can then be passed to the target process using some form of interprocess
1200 communication and the socket can be recreated there using :func:`fromshare`.
1201 Once this method has been called, it is safe to close the socket since
1202 the operating system has already duplicated it for the target process.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001203
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001204 Availability: Windows.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001205
1206 .. versionadded:: 3.3
1207
1208
Georg Brandl8569e582010-05-19 20:57:08 +00001209Note that there are no methods :meth:`read` or :meth:`write`; use
1210:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001211
1212Socket objects also have these (read-only) attributes that correspond to the
1213values given to the :class:`socket` constructor.
1214
1215
1216.. attribute:: socket.family
1217
1218 The socket family.
1219
Georg Brandl116aa622007-08-15 14:28:22 +00001220
1221.. attribute:: socket.type
1222
1223 The socket type.
1224
Georg Brandl116aa622007-08-15 14:28:22 +00001225
1226.. attribute:: socket.proto
1227
1228 The socket protocol.
1229
Georg Brandl116aa622007-08-15 14:28:22 +00001230
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001231
1232.. _socket-timeouts:
1233
1234Notes on socket timeouts
1235------------------------
1236
1237A socket object can be in one of three modes: blocking, non-blocking, or
1238timeout. Sockets are by default always created in blocking mode, but this
1239can be changed by calling :func:`setdefaulttimeout`.
1240
1241* In *blocking mode*, operations block until complete or the system returns
1242 an error (such as connection timed out).
1243
1244* In *non-blocking mode*, operations fail (with an error that is unfortunately
1245 system-dependent) if they cannot be completed immediately: functions from the
1246 :mod:`select` can be used to know when and whether a socket is available for
1247 reading or writing.
1248
1249* In *timeout mode*, operations fail if they cannot be completed within the
1250 timeout specified for the socket (they raise a :exc:`timeout` exception)
1251 or if the system returns an error.
1252
1253.. note::
1254 At the operating system level, sockets in *timeout mode* are internally set
1255 in non-blocking mode. Also, the blocking and timeout modes are shared between
1256 file descriptors and socket objects that refer to the same network endpoint.
1257 This implementation detail can have visible consequences if e.g. you decide
1258 to use the :meth:`~socket.fileno()` of a socket.
1259
1260Timeouts and the ``connect`` method
1261^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1262
1263The :meth:`~socket.connect` operation is also subject to the timeout
1264setting, and in general it is recommended to call :meth:`~socket.settimeout`
1265before calling :meth:`~socket.connect` or pass a timeout parameter to
1266:meth:`create_connection`. However, the system network stack may also
1267return a connection timeout error of its own regardless of any Python socket
1268timeout setting.
1269
1270Timeouts and the ``accept`` method
1271^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1272
1273If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1274the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1275behaviour depends on settings of the listening socket:
1276
1277* if the listening socket is in *blocking mode* or in *timeout mode*,
1278 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1279
1280* if the listening socket is in *non-blocking mode*, whether the socket
1281 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1282 is operating system-dependent. If you want to ensure cross-platform
1283 behaviour, it is recommended you manually override this setting.
1284
1285
Georg Brandl116aa622007-08-15 14:28:22 +00001286.. _socket-example:
1287
1288Example
1289-------
1290
1291Here are four minimal example programs using the TCP/IP protocol: a server that
1292echoes all data that it receives back (servicing only one client), and a client
Ezio Melottic048d982013-04-17 04:10:26 +03001293using it. Note that a server must perform the sequence :func:`.socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001294:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1295repeating the :meth:`~socket.accept` to service more than one client), while a
Ezio Melottic048d982013-04-17 04:10:26 +03001296client only needs the sequence :func:`.socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001297note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1298the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001299:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001300
1301The first two examples support IPv4 only. ::
1302
1303 # Echo server program
1304 import socket
1305
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001306 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001307 PORT = 50007 # Arbitrary non-privileged port
1308 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1309 s.bind((HOST, PORT))
1310 s.listen(1)
1311 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001312 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001313 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001314 data = conn.recv(1024)
1315 if not data: break
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001316 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001317 conn.close()
1318
1319::
1320
1321 # Echo client program
1322 import socket
1323
1324 HOST = 'daring.cwi.nl' # The remote host
1325 PORT = 50007 # The same port as used by the server
1326 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1327 s.connect((HOST, PORT))
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001328 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001329 data = s.recv(1024)
1330 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001331 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001332
1333The next two examples are identical to the above two, but support both IPv4 and
1334IPv6. The server side will listen to the first address family available (it
1335should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1336precedence and the server may not accept IPv4 traffic. The client side will try
1337to connect to the all addresses returned as a result of the name resolution, and
1338sends traffic to the first one connected successfully. ::
1339
1340 # Echo server program
1341 import socket
1342 import sys
1343
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001344 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001345 PORT = 50007 # Arbitrary non-privileged port
1346 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001347 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1348 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001349 af, socktype, proto, canonname, sa = res
1350 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001351 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001352 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001353 s = None
1354 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001355 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001356 s.bind(sa)
1357 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001358 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001359 s.close()
1360 s = None
1361 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001362 break
1363 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001364 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001365 sys.exit(1)
1366 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001367 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001368 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001369 data = conn.recv(1024)
1370 if not data: break
1371 conn.send(data)
1372 conn.close()
1373
1374::
1375
1376 # Echo client program
1377 import socket
1378 import sys
1379
1380 HOST = 'daring.cwi.nl' # The remote host
1381 PORT = 50007 # The same port as used by the server
1382 s = None
1383 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1384 af, socktype, proto, canonname, sa = res
1385 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001386 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001387 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001388 s = None
1389 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001390 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001391 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001392 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001393 s.close()
1394 s = None
1395 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001396 break
1397 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001398 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001399 sys.exit(1)
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001400 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001401 data = s.recv(1024)
1402 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001403 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001404
Georg Brandl48310cd2009-01-03 21:18:54 +00001405
Charles-François Natali47413c12011-10-06 19:47:44 +02001406The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001407sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001408the interface::
1409
1410 import socket
1411
1412 # the public network interface
1413 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001414
Christian Heimesfaf2f632008-01-06 16:59:19 +00001415 # create a raw socket and bind it to the public interface
1416 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1417 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001418
Christian Heimesfaf2f632008-01-06 16:59:19 +00001419 # Include IP headers
1420 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001421
Christian Heimesfaf2f632008-01-06 16:59:19 +00001422 # receive all packages
1423 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001424
Christian Heimesfaf2f632008-01-06 16:59:19 +00001425 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001426 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001427
Christian Heimesc3f30c42008-02-22 16:37:40 +00001428 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001429 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001430
Charles-François Natali47413c12011-10-06 19:47:44 +02001431The last example shows how to use the socket interface to communicate to a CAN
Charles-François Natali773e42d2013-02-05 19:42:01 +01001432network using the raw socket protocol. To use CAN with the broadcast
1433manager protocol instead, open a socket with::
1434
1435 socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1436
1437After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
Mark Dickinsond80b16d2013-02-10 18:43:16 +00001438can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
Charles-François Natali773e42d2013-02-05 19:42:01 +01001439their counterparts) on the socket object as usual.
1440
1441This example might require special priviledge::
Charles-François Natali47413c12011-10-06 19:47:44 +02001442
1443 import socket
1444 import struct
1445
1446
Georg Brandla673eb82012-03-04 16:17:05 +01001447 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02001448
1449 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001450 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001451
1452 def build_can_frame(can_id, data):
1453 can_dlc = len(data)
1454 data = data.ljust(8, b'\x00')
1455 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1456
1457 def dissect_can_frame(frame):
1458 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1459 return (can_id, can_dlc, data[:can_dlc])
1460
1461
Georg Brandla673eb82012-03-04 16:17:05 +01001462 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02001463 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1464 s.bind(('vcan0',))
1465
1466 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001467 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001468
1469 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1470
1471 try:
1472 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001473 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001474 print('Error sending CAN frame')
1475
1476 try:
1477 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001478 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001479 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001480
Sandro Tosi172f3742011-09-02 20:06:31 +02001481Running an example several times with too small delay between executions, could
1482lead to this error::
1483
Antoine Pitrou5574c302011-10-12 17:53:43 +02001484 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001485
1486This is because the previous execution has left the socket in a ``TIME_WAIT``
1487state, and can't be immediately reused.
1488
1489There is a :mod:`socket` flag to set, in order to prevent this,
1490:data:`socket.SO_REUSEADDR`::
1491
1492 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1493 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1494 s.bind((HOST, PORT))
1495
1496the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1497``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1498
1499
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001500.. seealso::
1501
1502 For an introduction to socket programming (in C), see the following papers:
1503
1504 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1505
1506 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1507 al,
1508
1509 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1510 PS1:7 and PS1:8). The platform-specific reference material for the various
1511 socket-related system calls are also a valuable source of information on the
1512 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1513 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1514 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.
1515