blob: e330f0add1b28ea05ccbe879d5b87efb23732cb4 [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
Andrew Kuchling98f2bbf2014-03-01 07:53:28 -05009all modern Unix systems, Windows, MacOS, and probably additional platforms.
Georg Brandl116aa622007-08-15 14:28:22 +000010
11.. note::
12
13 Some behavior may be platform dependent, since calls are made to the operating
14 system socket APIs.
15
Georg Brandl116aa622007-08-15 14:28:22 +000016.. index:: object: socket
17
18The Python interface is a straightforward transliteration of the Unix system
19call and library interface for sockets to Python's object-oriented style: the
Ezio Melottic048d982013-04-17 04:10:26 +030020:func:`.socket` function returns a :dfn:`socket object` whose methods implement
Georg Brandl116aa622007-08-15 14:28:22 +000021the various socket system calls. Parameter types are somewhat higher-level than
22in the C interface: as with :meth:`read` and :meth:`write` operations on Python
23files, buffer allocation on receive operations is automatic, and buffer length
24is implicit on send operations.
25
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000026
Antoine Pitroue1bc8982011-01-02 22:12:22 +000027.. seealso::
28
29 Module :mod:`socketserver`
30 Classes that simplify writing network servers.
31
32 Module :mod:`ssl`
33 A TLS/SSL wrapper for socket objects.
34
35
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000036Socket families
37---------------
38
39Depending on the system and the build options, various socket families
40are supported by this module.
41
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010042The address format required by a particular socket object is automatically
43selected based on the address family specified when the socket object was
44created. Socket addresses are represented as follows:
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000045
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010046- The address of an :const:`AF_UNIX` socket bound to a file system node
47 is represented as a string, using the file system encoding and the
48 ``'surrogateescape'`` error handler (see :pep:`383`). An address in
49 Linux's abstract namespace is returned as a :class:`bytes` object with
50 an initial null byte; note that sockets in this namespace can
51 communicate with normal file system sockets, so programs intended to
52 run on Linux may need to deal with both types of address. A string or
53 :class:`bytes` object can be used for either type of address when
54 passing it as an argument.
55
56 .. versionchanged:: 3.3
57 Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8
58 encoding.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000059
60- A pair ``(host, port)`` is used for the :const:`AF_INET` address family,
61 where *host* is a string representing either a hostname in Internet domain
62 notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``,
Sandro Tosi27b130e2012-06-14 00:37:09 +020063 and *port* is an integer.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000064
65- For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
66 scopeid)`` is used, where *flowinfo* and *scopeid* represent the ``sin6_flowinfo``
67 and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C. For
68 :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for
69 backward compatibility. Note, however, omission of *scopeid* can cause problems
70 in manipulating scoped IPv6 addresses.
71
72- :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``.
73
74- Linux-only support for TIPC is available using the :const:`AF_TIPC`
75 address family. TIPC is an open, non-IP based networked protocol designed
76 for use in clustered computer environments. Addresses are represented by a
77 tuple, and the fields depend on the address type. The general tuple form is
78 ``(addr_type, v1, v2, v3 [, scope])``, where:
79
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010080 - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`,
81 or :const:`TIPC_ADDR_ID`.
82 - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, and
83 :const:`TIPC_NODE_SCOPE`.
84 - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000085 the port identifier, and *v3* should be 0.
86
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010087 If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2*
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000088 is the lower port number, and *v3* is the upper port number.
89
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010090 If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000091 reference, and *v3* should be set to 0.
92
Charles-François Natali47413c12011-10-06 19:47:44 +020093- A tuple ``(interface, )`` is used for the :const:`AF_CAN` address family,
94 where *interface* is a string representing a network interface name like
95 ``'can0'``. The network interface name ``''`` can be used to receive packets
96 from all network interfaces of this family.
97
Martin v. Löwis9d6c6692012-02-03 17:44:58 +010098- A string or a tuple ``(id, unit)`` is used for the :const:`SYSPROTO_CONTROL`
99 protocol of the :const:`PF_SYSTEM` family. The string is the name of a
100 kernel control using a dynamically-assigned ID. The tuple can be used if ID
101 and unit number of the kernel control are known or if a registered ID is
102 used.
103
104 .. versionadded:: 3.3
105
Charles-François Natali773e42d2013-02-05 19:42:01 +0100106- Certain other address families (:const:`AF_BLUETOOTH`, :const:`AF_PACKET`,
107 :const:`AF_CAN`) support specific representations.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000108
109 .. XXX document them!
Georg Brandl116aa622007-08-15 14:28:22 +0000110
111For IPv4 addresses, two special forms are accepted instead of a host address:
112the empty string represents :const:`INADDR_ANY`, and the string
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000113``'<broadcast>'`` represents :const:`INADDR_BROADCAST`. This behavior is not
114compatible with IPv6, therefore, you may want to avoid these if you intend
115to support IPv6 with your Python programs.
Georg Brandl116aa622007-08-15 14:28:22 +0000116
117If you use a hostname in the *host* portion of IPv4/v6 socket address, the
118program may show a nondeterministic behavior, as Python uses the first address
119returned from the DNS resolution. The socket address will be resolved
120differently into an actual IPv4/v6 address, depending on the results from DNS
121resolution and/or the host configuration. For deterministic behavior use a
122numeric address in *host* portion.
123
Georg Brandl116aa622007-08-15 14:28:22 +0000124All errors raise exceptions. The normal exceptions for invalid argument types
Antoine Pitrou5574c302011-10-12 17:53:43 +0200125and out-of-memory conditions can be raised; starting from Python 3.3, errors
126related to socket or address semantics raise :exc:`OSError` or one of its
127subclasses (they used to raise :exc:`socket.error`).
Georg Brandl116aa622007-08-15 14:28:22 +0000128
Georg Brandl8569e582010-05-19 20:57:08 +0000129Non-blocking mode is supported through :meth:`~socket.setblocking`. A
130generalization of this based on timeouts is supported through
131:meth:`~socket.settimeout`.
Georg Brandl116aa622007-08-15 14:28:22 +0000132
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000133
134Module contents
135---------------
136
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100137The module :mod:`socket` exports the following elements.
Georg Brandl116aa622007-08-15 14:28:22 +0000138
139
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100140Exceptions
141^^^^^^^^^^
142
Georg Brandl116aa622007-08-15 14:28:22 +0000143.. exception:: error
144
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200145 A deprecated alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000146
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200147 .. versionchanged:: 3.3
148 Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000149
150
151.. exception:: herror
152
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200153 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000154 address-related errors, i.e. for functions that use *h_errno* in the POSIX
155 C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
156 The accompanying value is a pair ``(h_errno, string)`` representing an
157 error returned by a library call. *h_errno* is a numeric value, while
158 *string* represents the description of *h_errno*, as returned by the
159 :c:func:`hstrerror` C function.
Georg Brandl116aa622007-08-15 14:28:22 +0000160
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200161 .. versionchanged:: 3.3
162 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000163
164.. exception:: gaierror
165
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200166 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000167 address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
168 The accompanying value is a pair ``(error, string)`` representing an error
169 returned by a library call. *string* represents the description of
170 *error*, as returned by the :c:func:`gai_strerror` C function. The
171 numeric *error* value will match one of the :const:`EAI_\*` constants
172 defined in this module.
Georg Brandl116aa622007-08-15 14:28:22 +0000173
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200174 .. versionchanged:: 3.3
175 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000176
177.. exception:: timeout
178
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200179 A subclass of :exc:`OSError`, this exception is raised when a timeout
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000180 occurs on a socket which has had timeouts enabled via a prior call to
181 :meth:`~socket.settimeout` (or implicitly through
182 :func:`~socket.setdefaulttimeout`). The accompanying value is a string
183 whose value is currently always "timed out".
Georg Brandl116aa622007-08-15 14:28:22 +0000184
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200185 .. versionchanged:: 3.3
186 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000187
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100188
189Constants
190^^^^^^^^^
191
Ethan Furman7184bac2014-10-14 18:56:53 -0700192 The AF_* and SOCK_* constants are now :class:`AddressFamily` and
193 :class:`SocketKind` :class:`.IntEnum` collections.
194
195 .. versionadded:: 3.4
196
Georg Brandl116aa622007-08-15 14:28:22 +0000197.. data:: AF_UNIX
198 AF_INET
199 AF_INET6
200
201 These constants represent the address (and protocol) families, used for the
Ezio Melottic048d982013-04-17 04:10:26 +0300202 first argument to :func:`.socket`. If the :const:`AF_UNIX` constant is not
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000203 defined then this protocol is unsupported. More constants may be available
204 depending on the system.
Georg Brandl116aa622007-08-15 14:28:22 +0000205
206
207.. data:: SOCK_STREAM
208 SOCK_DGRAM
209 SOCK_RAW
210 SOCK_RDM
211 SOCK_SEQPACKET
212
213 These constants represent the socket types, used for the second argument to
Ezio Melottic048d982013-04-17 04:10:26 +0300214 :func:`.socket`. More constants may be available depending on the system.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000215 (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
216 useful.)
Georg Brandl116aa622007-08-15 14:28:22 +0000217
Antoine Pitroub1c54962010-10-14 15:05:38 +0000218.. data:: SOCK_CLOEXEC
219 SOCK_NONBLOCK
220
221 These two constants, if defined, can be combined with the socket types and
222 allow you to set some flags atomically (thus avoiding possible race
223 conditions and the need for separate calls).
224
225 .. seealso::
226
227 `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
228 for a more thorough explanation.
229
230 Availability: Linux >= 2.6.27.
231
232 .. versionadded:: 3.2
Georg Brandl116aa622007-08-15 14:28:22 +0000233
234.. data:: SO_*
235 SOMAXCONN
236 MSG_*
237 SOL_*
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000238 SCM_*
Georg Brandl116aa622007-08-15 14:28:22 +0000239 IPPROTO_*
240 IPPORT_*
241 INADDR_*
242 IP_*
243 IPV6_*
244 EAI_*
245 AI_*
246 NI_*
247 TCP_*
248
249 Many constants of these forms, documented in the Unix documentation on sockets
250 and/or the IP protocol, are also defined in the socket module. They are
251 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
252 methods of socket objects. In most cases, only those symbols that are defined
253 in the Unix header files are defined; for a few symbols, default values are
254 provided.
255
Charles-François Natali47413c12011-10-06 19:47:44 +0200256.. data:: AF_CAN
257 PF_CAN
258 SOL_CAN_*
259 CAN_*
260
261 Many constants of these forms, documented in the Linux documentation, are
262 also defined in the socket module.
263
264 Availability: Linux >= 2.6.25.
265
266 .. versionadded:: 3.3
267
Charles-François Natali773e42d2013-02-05 19:42:01 +0100268.. data:: CAN_BCM
269 CAN_BCM_*
270
271 CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol.
272 Broadcast manager constants, documented in the Linux documentation, are also
273 defined in the socket module.
274
275 Availability: Linux >= 2.6.25.
276
277 .. versionadded:: 3.4
Charles-François Natali47413c12011-10-06 19:47:44 +0200278
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100279.. data:: AF_RDS
280 PF_RDS
281 SOL_RDS
282 RDS_*
283
284 Many constants of these forms, documented in the Linux documentation, are
285 also defined in the socket module.
286
287 Availability: Linux >= 2.6.30.
288
289 .. versionadded:: 3.3
290
291
Christian Heimesfaf2f632008-01-06 16:59:19 +0000292.. data:: SIO_*
293 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000294
Christian Heimesfaf2f632008-01-06 16:59:19 +0000295 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300296 :meth:`~socket.socket.ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000297
Georg Brandl116aa622007-08-15 14:28:22 +0000298
Christian Heimes043d6f62008-01-07 17:19:16 +0000299.. data:: TIPC_*
300
301 TIPC related constants, matching the ones exported by the C socket API. See
302 the TIPC documentation for more information.
303
Giampaolo Rodola'80e1c432013-05-21 21:02:04 +0200304.. data:: AF_LINK
305
306 Availability: BSD, OSX.
307
308 .. versionadded:: 3.4
Christian Heimes043d6f62008-01-07 17:19:16 +0000309
Georg Brandl116aa622007-08-15 14:28:22 +0000310.. data:: has_ipv6
311
312 This constant contains a boolean value which indicates if IPv6 is supported on
313 this platform.
314
Georg Brandl116aa622007-08-15 14:28:22 +0000315
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100316Functions
317^^^^^^^^^
318
319Creating sockets
320''''''''''''''''
321
322The following functions all create :ref:`socket objects <socket-objects>`.
323
324
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100325.. function:: socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100326
327 Create a new socket using the given address family, socket type and protocol
328 number. The address family should be :const:`AF_INET` (the default),
329 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
330 socket type should be :const:`SOCK_STREAM` (the default),
331 :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100332 constants. The protocol number is usually zero and may be omitted or in the
333 case where the address family is :const:`AF_CAN` the protocol should be one
334 of :const:`CAN_RAW` or :const:`CAN_BCM`.
335
336 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100337
338 .. versionchanged:: 3.3
339 The AF_CAN family was added.
340 The AF_RDS family was added.
341
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100342 .. versionchanged:: 3.4
343 The CAN_BCM protocol was added.
344
345 .. versionchanged:: 3.4
346 The returned socket is now non-inheritable.
347
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100348
349.. function:: socketpair([family[, type[, proto]]])
350
351 Build a pair of connected socket objects using the given address family, socket
352 type, and protocol number. Address family, socket type, and protocol number are
353 as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
354 if defined on the platform; otherwise, the default is :const:`AF_INET`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100355
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
Charles-François Natali98c745a2014-10-14 21:22:44 +0100365 .. versionchanged:: 3.5
366 Windows support added.
367
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100368
Gregory P. Smithb4066372010-01-03 03:28:29 +0000369.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000370
Antoine Pitrou889a5102012-01-12 08:06:19 +0100371 Connect to a TCP service listening on the Internet *address* (a 2-tuple
372 ``(host, port)``), and return the socket object. This is a higher-level
373 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
374 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
375 and then try to connect to all possible addresses in turn until a
376 connection succeeds. This makes it easy to write clients that are
377 compatible to both IPv4 and IPv6.
378
379 Passing the optional *timeout* parameter will set the timeout on the
380 socket instance before attempting to connect. If no *timeout* is
381 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000382 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000383
Gregory P. Smithb4066372010-01-03 03:28:29 +0000384 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
385 socket to bind to as its source address before connecting. If host or port
386 are '' or 0 respectively the OS default behavior will be used.
387
388 .. versionchanged:: 3.2
389 *source_address* was added.
390
Giampaolo Rodolàb383dbb2010-09-08 22:44:12 +0000391 .. versionchanged:: 3.2
392 support for the :keyword:`with` statement was added.
393
Georg Brandl116aa622007-08-15 14:28:22 +0000394
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100395.. function:: fromfd(fd, family, type, proto=0)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100396
397 Duplicate the file descriptor *fd* (an integer as returned by a file object's
398 :meth:`fileno` method) and build a socket object from the result. Address
399 family, socket type and protocol number are as for the :func:`.socket` function
400 above. The file descriptor should refer to a socket, but this is not checked ---
401 subsequent operations on the object may fail if the file descriptor is invalid.
402 This function is rarely needed, but can be used to get or set socket options on
403 a socket passed to a program as standard input or output (such as a server
404 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
405
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100406 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
407
408 .. versionchanged:: 3.4
409 The returned socket is now non-inheritable.
410
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100411
412.. function:: fromshare(data)
413
414 Instantiate a socket from data obtained from the :meth:`socket.share`
415 method. The socket is assumed to be in blocking mode.
416
417 Availability: Windows.
418
419 .. versionadded:: 3.3
420
421
422.. data:: SocketType
423
424 This is a Python type object that represents the socket object type. It is the
425 same as ``type(socket(...))``.
426
427
428Other functions
429'''''''''''''''
430
431The :mod:`socket` module also offers various network-related services:
432
433
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000434.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000435
Antoine Pitrou91035972010-05-31 17:04:40 +0000436 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
437 all the necessary arguments for creating a socket connected to that service.
438 *host* is a domain name, a string representation of an IPv4/v6 address
439 or ``None``. *port* is a string service name such as ``'http'``, a numeric
440 port number or ``None``. By passing ``None`` as the value of *host*
441 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000442
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000443 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000444 in order to narrow the list of addresses returned. Passing zero as a
445 value for each of these arguments selects the full range of results.
446 The *flags* argument can be one or several of the ``AI_*`` constants,
447 and will influence how results are computed and returned.
448 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
449 and will raise an error if *host* is a domain name.
450
451 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000452
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000453 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000454
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000455 In these tuples, *family*, *type*, *proto* are all integers and are
Ezio Melottic048d982013-04-17 04:10:26 +0300456 meant to be passed to the :func:`.socket` function. *canonname* will be
Antoine Pitrou91035972010-05-31 17:04:40 +0000457 a string representing the canonical name of the *host* if
458 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
459 will be empty. *sockaddr* is a tuple describing a socket address, whose
460 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
461 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
462 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
463 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000464
Antoine Pitrou91035972010-05-31 17:04:40 +0000465 The following example fetches address information for a hypothetical TCP
466 connection to ``www.python.org`` on port 80 (results may differ on your
467 system if IPv6 isn't enabled)::
468
Georg Brandl2b07b0e2014-10-28 22:45:27 +0100469 >>> socket.getaddrinfo("www.python.org", 80, proto=socket.IPPROTO_TCP)
Antoine Pitrou91035972010-05-31 17:04:40 +0000470 [(2, 1, 6, '', ('82.94.164.162', 80)),
471 (10, 1, 6, '', ('2001:888:2000:d::a2', 80, 0, 0))]
Georg Brandl116aa622007-08-15 14:28:22 +0000472
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000473 .. versionchanged:: 3.2
Andrew Kuchling46ff4ee2014-02-15 16:39:37 -0500474 parameters can now be passed using keyword arguments.
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000475
Georg Brandl116aa622007-08-15 14:28:22 +0000476.. function:: getfqdn([name])
477
478 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
479 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000480 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000481 host, if available. The first name which includes a period is selected. In
482 case no fully qualified domain name is available, the hostname as returned by
483 :func:`gethostname` is returned.
484
Georg Brandl116aa622007-08-15 14:28:22 +0000485
486.. function:: gethostbyname(hostname)
487
488 Translate a host name to IPv4 address format. The IPv4 address is returned as a
489 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
490 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
491 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
492 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
493
494
495.. function:: gethostbyname_ex(hostname)
496
497 Translate a host name to IPv4 address format, extended interface. Return a
498 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
499 host name responding to the given *ip_address*, *aliaslist* is a (possibly
500 empty) list of alternative host names for the same address, and *ipaddrlist* is
501 a list of IPv4 addresses for the same interface on the same host (often but not
502 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
503 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
504 stack support.
505
506
507.. function:: gethostname()
508
509 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000510 interpreter is currently executing.
511
512 If you want to know the current machine's IP address, you may want to use
513 ``gethostbyname(gethostname())``. This operation assumes that there is a
514 valid address-to-host mapping for the host, and the assumption does not
515 always hold.
516
517 Note: :func:`gethostname` doesn't always return the fully qualified domain
518 name; use ``getfqdn()`` (see above).
Georg Brandl116aa622007-08-15 14:28:22 +0000519
520
521.. function:: gethostbyaddr(ip_address)
522
523 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
524 primary host name responding to the given *ip_address*, *aliaslist* is a
525 (possibly empty) list of alternative host names for the same address, and
526 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
527 host (most likely containing only a single address). To find the fully qualified
528 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
529 both IPv4 and IPv6.
530
531
532.. function:: getnameinfo(sockaddr, flags)
533
534 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
535 on the settings of *flags*, the result can contain a fully-qualified domain name
536 or numeric address representation in *host*. Similarly, *port* can contain a
537 string port name or a numeric port number.
538
Georg Brandl116aa622007-08-15 14:28:22 +0000539
540.. function:: getprotobyname(protocolname)
541
542 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
Ezio Melottic048d982013-04-17 04:10:26 +0300543 suitable for passing as the (optional) third argument to the :func:`.socket`
Georg Brandl116aa622007-08-15 14:28:22 +0000544 function. This is usually only needed for sockets opened in "raw" mode
545 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
546 automatically if the protocol is omitted or zero.
547
548
549.. function:: getservbyname(servicename[, protocolname])
550
551 Translate an Internet service name and protocol name to a port number for that
552 service. The optional protocol name, if given, should be ``'tcp'`` or
553 ``'udp'``, otherwise any protocol will match.
554
555
556.. function:: getservbyport(port[, protocolname])
557
558 Translate an Internet port number and protocol name to a service name for that
559 service. The optional protocol name, if given, should be ``'tcp'`` or
560 ``'udp'``, otherwise any protocol will match.
561
562
Georg Brandl116aa622007-08-15 14:28:22 +0000563.. function:: ntohl(x)
564
565 Convert 32-bit positive integers from network to host byte order. On machines
566 where the host byte order is the same as network byte order, this is a no-op;
567 otherwise, it performs a 4-byte swap operation.
568
569
570.. function:: ntohs(x)
571
572 Convert 16-bit positive integers from network to host byte order. On machines
573 where the host byte order is the same as network byte order, this is a no-op;
574 otherwise, it performs a 2-byte swap operation.
575
576
577.. function:: htonl(x)
578
579 Convert 32-bit positive integers from host to network byte order. On machines
580 where the host byte order is the same as network byte order, this is a no-op;
581 otherwise, it performs a 4-byte swap operation.
582
583
584.. function:: htons(x)
585
586 Convert 16-bit positive integers from host to network byte order. On machines
587 where the host byte order is the same as network byte order, this is a no-op;
588 otherwise, it performs a 2-byte swap operation.
589
590
591.. function:: inet_aton(ip_string)
592
593 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000594 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000595 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000596 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000597 for the 32-bit packed binary this function returns.
598
Georg Brandlf5123ef2009-06-04 10:28:36 +0000599 :func:`inet_aton` also accepts strings with less than three dots; see the
600 Unix manual page :manpage:`inet(3)` for details.
601
Georg Brandl116aa622007-08-15 14:28:22 +0000602 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200603 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000604 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000605
Georg Brandl5f259722009-05-04 20:50:30 +0000606 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000607 instead for IPv4/v6 dual stack support.
608
609
610.. function:: inet_ntoa(packed_ip)
611
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000612 Convert a 32-bit packed IPv4 address (a bytes object four characters in
613 length) to its standard dotted-quad string representation (for example,
614 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000615 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000616 is the C type for the 32-bit packed binary data this function takes as an
617 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000618
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000619 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200620 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000621 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000622 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000623
624
625.. function:: inet_pton(address_family, ip_string)
626
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000627 Convert an IP address from its family-specific string format to a packed,
628 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000629 calls for an object of type :c:type:`struct in_addr` (similar to
630 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000631
632 Supported values for *address_family* are currently :const:`AF_INET` and
633 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200634 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000635 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000636 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000637
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900638 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000639
R David Murray6c501012014-03-07 21:22:39 -0500640 .. versionchanged:: 3.4
641 Windows support added
642
Georg Brandl116aa622007-08-15 14:28:22 +0000643
644.. function:: inet_ntop(address_family, packed_ip)
645
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000646 Convert a packed IP address (a bytes object of some number of characters) to its
Georg Brandl116aa622007-08-15 14:28:22 +0000647 standard, family-specific string representation (for example, ``'7.10.0.5'`` or
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000648 ``'5aef:2b::8'``). :func:`inet_ntop` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000649 returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`)
650 or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000651
652 Supported values for *address_family* are currently :const:`AF_INET` and
653 :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the
654 specified address family, :exc:`ValueError` will be raised. A
Antoine Pitrou5574c302011-10-12 17:53:43 +0200655 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000656
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900657 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000658
R David Murray6c501012014-03-07 21:22:39 -0500659 .. versionchanged:: 3.4
660 Windows support added
661
Georg Brandl116aa622007-08-15 14:28:22 +0000662
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000663..
664 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
665 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
666 interface, in which struct msghdr has no msg_control or
667 msg_controllen members, is not currently supported.
668
669.. function:: CMSG_LEN(length)
670
671 Return the total length, without trailing padding, of an ancillary
672 data item with associated data of the given *length*. This value
673 can often be used as the buffer size for :meth:`~socket.recvmsg` to
674 receive a single item of ancillary data, but :rfc:`3542` requires
675 portable applications to use :func:`CMSG_SPACE` and thus include
676 space for padding, even when the item will be the last in the
677 buffer. Raises :exc:`OverflowError` if *length* is outside the
678 permissible range of values.
679
680 Availability: most Unix platforms, possibly others.
681
682 .. versionadded:: 3.3
683
684
685.. function:: CMSG_SPACE(length)
686
687 Return the buffer size needed for :meth:`~socket.recvmsg` to
688 receive an ancillary data item with associated data of the given
689 *length*, along with any trailing padding. The buffer space needed
690 to receive multiple items is the sum of the :func:`CMSG_SPACE`
691 values for their associated data lengths. Raises
692 :exc:`OverflowError` if *length* is outside the permissible range
693 of values.
694
695 Note that some systems might support ancillary data without
696 providing this function. Also note that setting the buffer size
697 using the results of this function may not precisely limit the
698 amount of ancillary data that can be received, since additional
699 data may be able to fit into the padding area.
700
701 Availability: most Unix platforms, possibly others.
702
703 .. versionadded:: 3.3
704
705
Georg Brandl116aa622007-08-15 14:28:22 +0000706.. function:: getdefaulttimeout()
707
Ezio Melotti388c9452011-08-14 08:28:57 +0300708 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000709 of ``None`` indicates that new socket objects have no timeout. When the socket
710 module is first imported, the default is ``None``.
711
Georg Brandl116aa622007-08-15 14:28:22 +0000712
713.. function:: setdefaulttimeout(timeout)
714
Ezio Melotti388c9452011-08-14 08:28:57 +0300715 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000716 the socket module is first imported, the default is ``None``. See
717 :meth:`~socket.settimeout` for possible values and their respective
718 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000719
Georg Brandl116aa622007-08-15 14:28:22 +0000720
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000721.. function:: sethostname(name)
722
723 Set the machine's hostname to *name*. This will raise a
Antoine Pitrou5574c302011-10-12 17:53:43 +0200724 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000725
726 Availability: Unix.
727
728 .. versionadded:: 3.3
729
730
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700731.. function:: if_nameindex()
732
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700733 Return a list of network interface information
734 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200735 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700736
737 Availability: Unix.
738
739 .. versionadded:: 3.3
740
741
742.. function:: if_nametoindex(if_name)
743
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700744 Return a network interface index number corresponding to an
745 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200746 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700747
748 Availability: Unix.
749
750 .. versionadded:: 3.3
751
752
753.. function:: if_indextoname(if_index)
754
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700755 Return a network interface name corresponding to a
756 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200757 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700758
759 Availability: Unix.
760
761 .. versionadded:: 3.3
762
763
Georg Brandl116aa622007-08-15 14:28:22 +0000764.. _socket-objects:
765
766Socket Objects
767--------------
768
Antoine Pitroue3658a72013-12-04 21:02:42 +0100769Socket objects have the following methods. Except for
770:meth:`~socket.makefile`, these correspond to Unix system calls applicable
771to sockets.
Georg Brandl116aa622007-08-15 14:28:22 +0000772
773
774.. method:: socket.accept()
775
776 Accept a connection. The socket must be bound to an address and listening for
777 connections. The return value is a pair ``(conn, address)`` where *conn* is a
778 *new* socket object usable to send and receive data on the connection, and
779 *address* is the address bound to the socket on the other end of the connection.
780
Victor Stinnerdaf45552013-08-28 00:53:59 +0200781 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
782
783 .. versionchanged:: 3.4
784 The socket is now non-inheritable.
785
Georg Brandl116aa622007-08-15 14:28:22 +0000786
787.. method:: socket.bind(address)
788
789 Bind the socket to *address*. The socket must not already be bound. (The format
790 of *address* depends on the address family --- see above.)
791
Georg Brandl116aa622007-08-15 14:28:22 +0000792
793.. method:: socket.close()
794
Antoine Pitroue3658a72013-12-04 21:02:42 +0100795 Mark the socket closed. The underlying system resource (e.g. a file
796 descriptor) is also closed when all file objects from :meth:`makefile()`
797 are closed. Once that happens, all future operations on the socket
798 object will fail. The remote end will receive no more data (after
799 queued data is flushed).
800
801 Sockets are automatically closed when they are garbage-collected, but
802 it is recommended to :meth:`close` them explicitly, or to use a
803 :keyword:`with` statement around them.
Georg Brandl116aa622007-08-15 14:28:22 +0000804
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000805 .. note::
Éric Araujofa5e6e42014-03-12 19:51:00 -0400806
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000807 :meth:`close()` releases the resource associated with a connection but
808 does not necessarily close the connection immediately. If you want
809 to close the connection in a timely fashion, call :meth:`shutdown()`
810 before :meth:`close()`.
811
Georg Brandl116aa622007-08-15 14:28:22 +0000812
813.. method:: socket.connect(address)
814
815 Connect to a remote socket at *address*. (The format of *address* depends on the
816 address family --- see above.)
817
Georg Brandl116aa622007-08-15 14:28:22 +0000818
819.. method:: socket.connect_ex(address)
820
821 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +0000822 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +0000823 problems, such as "host not found," can still raise exceptions). The error
824 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +0000825 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +0000826 connects.
827
Georg Brandl116aa622007-08-15 14:28:22 +0000828
Antoine Pitrou6e451df2010-08-09 20:39:54 +0000829.. method:: socket.detach()
830
831 Put the socket object into closed state without actually closing the
832 underlying file descriptor. The file descriptor is returned, and can
833 be reused for other purposes.
834
835 .. versionadded:: 3.2
836
837
Victor Stinnerdaf45552013-08-28 00:53:59 +0200838.. method:: socket.dup()
839
840 Duplicate the socket.
841
842 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
843
844 .. versionchanged:: 3.4
845 The socket is now non-inheritable.
846
847
Georg Brandl116aa622007-08-15 14:28:22 +0000848.. method:: socket.fileno()
849
850 Return the socket's file descriptor (a small integer). This is useful with
851 :func:`select.select`.
852
853 Under Windows the small integer returned by this method cannot be used where a
854 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
855 this limitation.
856
857
Victor Stinnerdaf45552013-08-28 00:53:59 +0200858.. method:: socket.get_inheritable()
859
860 Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file
861 descriptor or socket's handle: ``True`` if the socket can be inherited in
862 child processes, ``False`` if it cannot.
863
864 .. versionadded:: 3.4
865
866
Georg Brandl116aa622007-08-15 14:28:22 +0000867.. method:: socket.getpeername()
868
869 Return the remote address to which the socket is connected. This is useful to
870 find out the port number of a remote IPv4/v6 socket, for instance. (The format
871 of the address returned depends on the address family --- see above.) On some
872 systems this function is not supported.
873
874
875.. method:: socket.getsockname()
876
877 Return the socket's own address. This is useful to find out the port number of
878 an IPv4/v6 socket, for instance. (The format of the address returned depends on
879 the address family --- see above.)
880
881
882.. method:: socket.getsockopt(level, optname[, buflen])
883
884 Return the value of the given socket option (see the Unix man page
885 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
886 are defined in this module. If *buflen* is absent, an integer option is assumed
887 and its integer value is returned by the function. If *buflen* is present, it
888 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000889 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +0000890 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000891 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +0000892
Georg Brandl48310cd2009-01-03 21:18:54 +0000893
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000894.. method:: socket.gettimeout()
895
Ezio Melotti388c9452011-08-14 08:28:57 +0300896 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000897 or ``None`` if no timeout is set. This reflects the last call to
898 :meth:`setblocking` or :meth:`settimeout`.
899
900
Christian Heimesfaf2f632008-01-06 16:59:19 +0000901.. method:: socket.ioctl(control, option)
902
Georg Brandl48310cd2009-01-03 21:18:54 +0000903 :platform: Windows
904
Christian Heimes679db4a2008-01-18 09:56:22 +0000905 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +0000906 interface. Please refer to the `Win32 documentation
907 <http://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
908 information.
Georg Brandl48310cd2009-01-03 21:18:54 +0000909
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000910 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
911 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000912
Charles-François Natali644b8f52014-05-22 19:45:39 +0100913.. method:: socket.listen([backlog])
Georg Brandl116aa622007-08-15 14:28:22 +0000914
Charles-François Natali644b8f52014-05-22 19:45:39 +0100915 Enable a server to accept connections. If *backlog* is specified, it must
916 be at least 0 (if it is lower, it is set to 0); it specifies the number of
917 unaccepted connections that the system will allow before refusing new
918 connections. If not specified, a default reasonable value is chosen.
Georg Brandl116aa622007-08-15 14:28:22 +0000919
Charles-François Natali644b8f52014-05-22 19:45:39 +0100920 .. versionchanged:: 3.5
921 The *backlog* parameter is now optional.
Georg Brandl116aa622007-08-15 14:28:22 +0000922
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000923.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
924 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000925
926 .. index:: single: I/O control; buffering
927
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000928 Return a :term:`file object` associated with the socket. The exact returned
929 type depends on the arguments given to :meth:`makefile`. These arguments are
930 interpreted the same way as by the built-in :func:`open` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000931
Antoine Pitroue3658a72013-12-04 21:02:42 +0100932 The socket must be in blocking mode; it can have a timeout, but the file
933 object's internal buffer may end up in a inconsistent state if a timeout
934 occurs.
935
936 Closing the file object returned by :meth:`makefile` won't close the
937 original socket unless all other file objects have been closed and
938 :meth:`socket.close` has been called on the socket object.
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000939
940 .. note::
941
942 On Windows, the file-like object created by :meth:`makefile` cannot be
943 used where a file object with a file descriptor is expected, such as the
944 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000945
Georg Brandl116aa622007-08-15 14:28:22 +0000946
947.. method:: socket.recv(bufsize[, flags])
948
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000949 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +0000950 data received. The maximum amount of data to be received at once is specified
951 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
952 the optional argument *flags*; it defaults to zero.
953
954 .. note::
955
956 For best match with hardware and network realities, the value of *bufsize*
957 should be a relatively small power of 2, for example, 4096.
958
959
960.. method:: socket.recvfrom(bufsize[, flags])
961
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000962 Receive data from the socket. The return value is a pair ``(bytes, address)``
963 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +0000964 address of the socket sending the data. See the Unix manual page
965 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
966 to zero. (The format of *address* depends on the address family --- see above.)
967
968
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000969.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
970
971 Receive normal data (up to *bufsize* bytes) and ancillary data from
972 the socket. The *ancbufsize* argument sets the size in bytes of
973 the internal buffer used to receive the ancillary data; it defaults
974 to 0, meaning that no ancillary data will be received. Appropriate
975 buffer sizes for ancillary data can be calculated using
976 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
977 into the buffer might be truncated or discarded. The *flags*
978 argument defaults to 0 and has the same meaning as for
979 :meth:`recv`.
980
981 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
982 address)``. The *data* item is a :class:`bytes` object holding the
983 non-ancillary data received. The *ancdata* item is a list of zero
984 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
985 the ancillary data (control messages) received: *cmsg_level* and
986 *cmsg_type* are integers specifying the protocol level and
987 protocol-specific type respectively, and *cmsg_data* is a
988 :class:`bytes` object holding the associated data. The *msg_flags*
989 item is the bitwise OR of various flags indicating conditions on
990 the received message; see your system documentation for details.
991 If the receiving socket is unconnected, *address* is the address of
992 the sending socket, if available; otherwise, its value is
993 unspecified.
994
995 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
996 pass file descriptors between processes over an :const:`AF_UNIX`
997 socket. When this facility is used (it is often restricted to
998 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
999 ancillary data, items of the form ``(socket.SOL_SOCKET,
1000 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
1001 representing the new file descriptors as a binary array of the
1002 native C :c:type:`int` type. If :meth:`recvmsg` raises an
1003 exception after the system call returns, it will first attempt to
1004 close any file descriptors received via this mechanism.
1005
1006 Some systems do not indicate the truncated length of ancillary data
1007 items which have been only partially received. If an item appears
1008 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
1009 a :exc:`RuntimeWarning`, and will return the part of it which is
1010 inside the buffer provided it has not been truncated before the
1011 start of its associated data.
1012
1013 On systems which support the :const:`SCM_RIGHTS` mechanism, the
1014 following function will receive up to *maxfds* file descriptors,
1015 returning the message data and a list containing the descriptors
1016 (while ignoring unexpected conditions such as unrelated control
1017 messages being received). See also :meth:`sendmsg`. ::
1018
1019 import socket, array
1020
1021 def recv_fds(sock, msglen, maxfds):
1022 fds = array.array("i") # Array of ints
1023 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1024 for cmsg_level, cmsg_type, cmsg_data in ancdata:
1025 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
1026 # Append data, ignoring any truncated integers at the end.
1027 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
1028 return msg, list(fds)
1029
1030 Availability: most Unix platforms, possibly others.
1031
1032 .. versionadded:: 3.3
1033
1034
1035.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1036
1037 Receive normal data and ancillary data from the socket, behaving as
1038 :meth:`recvmsg` would, but scatter the non-ancillary data into a
1039 series of buffers instead of returning a new bytes object. The
1040 *buffers* argument must be an iterable of objects that export
1041 writable buffers (e.g. :class:`bytearray` objects); these will be
1042 filled with successive chunks of the non-ancillary data until it
1043 has all been written or there are no more buffers. The operating
1044 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1045 on the number of buffers that can be used. The *ancbufsize* and
1046 *flags* arguments have the same meaning as for :meth:`recvmsg`.
1047
1048 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1049 address)``, where *nbytes* is the total number of bytes of
1050 non-ancillary data written into the buffers, and *ancdata*,
1051 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1052
1053 Example::
1054
1055 >>> import socket
1056 >>> s1, s2 = socket.socketpair()
1057 >>> b1 = bytearray(b'----')
1058 >>> b2 = bytearray(b'0123456789')
1059 >>> b3 = bytearray(b'--------------')
1060 >>> s1.send(b'Mary had a little lamb')
1061 22
1062 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1063 (22, [], 0, None)
1064 >>> [b1, b2, b3]
1065 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1066
1067 Availability: most Unix platforms, possibly others.
1068
1069 .. versionadded:: 3.3
1070
1071
Georg Brandl116aa622007-08-15 14:28:22 +00001072.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1073
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001074 Receive data from the socket, writing it into *buffer* instead of creating a
1075 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +00001076 the number of bytes received and *address* is the address of the socket sending
1077 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
1078 optional argument *flags*; it defaults to zero. (The format of *address*
1079 depends on the address family --- see above.)
1080
Georg Brandl116aa622007-08-15 14:28:22 +00001081
1082.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1083
1084 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001085 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +00001086 receive up to the size available in the given buffer. Returns the number of
1087 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
1088 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001089
Georg Brandl116aa622007-08-15 14:28:22 +00001090
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001091.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001092
1093 Send data to the socket. The socket must be connected to a remote socket. The
1094 optional *flags* argument has the same meaning as for :meth:`recv` above.
1095 Returns the number of bytes sent. Applications are responsible for checking that
1096 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001097 application needs to attempt delivery of the remaining data. For further
1098 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +00001099
1100
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001101.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001102
1103 Send data to the socket. The socket must be connected to a remote socket. The
1104 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001105 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001106 either all data has been sent or an error occurs. ``None`` is returned on
1107 success. On error, an exception is raised, and there is no way to determine how
1108 much data, if any, was successfully sent.
1109
1110
Ezio Melottie0add762012-09-14 06:32:35 +03001111.. method:: socket.sendto(bytes, address)
1112 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001113
1114 Send data to the socket. The socket should not be connected to a remote socket,
1115 since the destination socket is specified by *address*. The optional *flags*
1116 argument has the same meaning as for :meth:`recv` above. Return the number of
1117 bytes sent. (The format of *address* depends on the address family --- see
1118 above.)
1119
1120
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001121.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1122
1123 Send normal and ancillary data to the socket, gathering the
1124 non-ancillary data from a series of buffers and concatenating it
1125 into a single message. The *buffers* argument specifies the
Serhiy Storchakab757c832014-12-05 22:25:22 +02001126 non-ancillary data as an iterable of
1127 :term:`bytes-like objects <bytes-like object>`
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001128 (e.g. :class:`bytes` objects); the operating system may set a limit
1129 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1130 that can be used. The *ancdata* argument specifies the ancillary
1131 data (control messages) as an iterable of zero or more tuples
1132 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1133 *cmsg_type* are integers specifying the protocol level and
1134 protocol-specific type respectively, and *cmsg_data* is a
Serhiy Storchakab757c832014-12-05 22:25:22 +02001135 bytes-like object holding the associated data. Note that
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001136 some systems (in particular, systems without :func:`CMSG_SPACE`)
1137 might support sending only one control message per call. The
1138 *flags* argument defaults to 0 and has the same meaning as for
1139 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1140 destination address for the message. The return value is the
1141 number of bytes of non-ancillary data sent.
1142
1143 The following function sends the list of file descriptors *fds*
1144 over an :const:`AF_UNIX` socket, on systems which support the
1145 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1146
1147 import socket, array
1148
1149 def send_fds(sock, msg, fds):
1150 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1151
1152 Availability: most Unix platforms, possibly others.
1153
1154 .. versionadded:: 3.3
1155
Giampaolo Rodola'915d1412014-06-11 03:54:30 +02001156.. method:: socket.sendfile(file, offset=0, count=None)
1157
1158 Send a file until EOF is reached by using high-performance
1159 :mod:`os.sendfile` and return the total number of bytes which were sent.
1160 *file* must be a regular file object opened in binary mode. If
1161 :mod:`os.sendfile` is not available (e.g. Windows) or *file* is not a
1162 regular file :meth:`send` will be used instead. *offset* tells from where to
1163 start reading the file. If specified, *count* is the total number of bytes
1164 to transmit as opposed to sending the file until EOF is reached. File
1165 position is updated on return or also in case of error in which case
1166 :meth:`file.tell() <io.IOBase.tell>` can be used to figure out the number of
1167 bytes which were sent. The socket must be of :const:`SOCK_STREAM` type. Non-
1168 blocking sockets are not supported.
1169
1170 .. versionadded:: 3.5
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001171
Victor Stinnerdaf45552013-08-28 00:53:59 +02001172.. method:: socket.set_inheritable(inheritable)
1173
1174 Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1175 descriptor or socket's handle.
1176
1177 .. versionadded:: 3.4
1178
1179
Georg Brandl116aa622007-08-15 14:28:22 +00001180.. method:: socket.setblocking(flag)
1181
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001182 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1183 socket is set to non-blocking, else to blocking mode.
1184
1185 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1186
1187 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1188
1189 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001190
1191
1192.. method:: socket.settimeout(value)
1193
1194 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001195 nonnegative floating point number expressing seconds, or ``None``.
1196 If a non-zero value is given, subsequent socket operations will raise a
1197 :exc:`timeout` exception if the timeout period *value* has elapsed before
1198 the operation has completed. If zero is given, the socket is put in
1199 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001200
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001201 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001202
1203
1204.. method:: socket.setsockopt(level, optname, value)
1205
1206 .. index:: module: struct
1207
1208 Set the value of the given socket option (see the Unix manual page
1209 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
1210 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001211 bytes object representing a buffer. In the latter case it is up to the caller to
1212 ensure that the bytestring contains the proper bits (see the optional built-in
1213 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001214
1215
1216.. method:: socket.shutdown(how)
1217
1218 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1219 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1220 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001221 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001222
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001223
1224.. method:: socket.share(process_id)
1225
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001226 Duplicate a socket and prepare it for sharing with a target process. The
1227 target process must be provided with *process_id*. The resulting bytes object
1228 can then be passed to the target process using some form of interprocess
1229 communication and the socket can be recreated there using :func:`fromshare`.
1230 Once this method has been called, it is safe to close the socket since
1231 the operating system has already duplicated it for the target process.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001232
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001233 Availability: Windows.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001234
1235 .. versionadded:: 3.3
1236
1237
Georg Brandl8569e582010-05-19 20:57:08 +00001238Note that there are no methods :meth:`read` or :meth:`write`; use
1239:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001240
1241Socket objects also have these (read-only) attributes that correspond to the
1242values given to the :class:`socket` constructor.
1243
1244
1245.. attribute:: socket.family
1246
1247 The socket family.
1248
Georg Brandl116aa622007-08-15 14:28:22 +00001249
1250.. attribute:: socket.type
1251
1252 The socket type.
1253
Georg Brandl116aa622007-08-15 14:28:22 +00001254
1255.. attribute:: socket.proto
1256
1257 The socket protocol.
1258
Georg Brandl116aa622007-08-15 14:28:22 +00001259
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001260
1261.. _socket-timeouts:
1262
1263Notes on socket timeouts
1264------------------------
1265
1266A socket object can be in one of three modes: blocking, non-blocking, or
1267timeout. Sockets are by default always created in blocking mode, but this
1268can be changed by calling :func:`setdefaulttimeout`.
1269
1270* In *blocking mode*, operations block until complete or the system returns
1271 an error (such as connection timed out).
1272
1273* In *non-blocking mode*, operations fail (with an error that is unfortunately
1274 system-dependent) if they cannot be completed immediately: functions from the
1275 :mod:`select` can be used to know when and whether a socket is available for
1276 reading or writing.
1277
1278* In *timeout mode*, operations fail if they cannot be completed within the
1279 timeout specified for the socket (they raise a :exc:`timeout` exception)
1280 or if the system returns an error.
1281
1282.. note::
1283 At the operating system level, sockets in *timeout mode* are internally set
1284 in non-blocking mode. Also, the blocking and timeout modes are shared between
1285 file descriptors and socket objects that refer to the same network endpoint.
1286 This implementation detail can have visible consequences if e.g. you decide
1287 to use the :meth:`~socket.fileno()` of a socket.
1288
1289Timeouts and the ``connect`` method
1290^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1291
1292The :meth:`~socket.connect` operation is also subject to the timeout
1293setting, and in general it is recommended to call :meth:`~socket.settimeout`
1294before calling :meth:`~socket.connect` or pass a timeout parameter to
1295:meth:`create_connection`. However, the system network stack may also
1296return a connection timeout error of its own regardless of any Python socket
1297timeout setting.
1298
1299Timeouts and the ``accept`` method
1300^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1301
1302If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1303the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1304behaviour depends on settings of the listening socket:
1305
1306* if the listening socket is in *blocking mode* or in *timeout mode*,
1307 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1308
1309* if the listening socket is in *non-blocking mode*, whether the socket
1310 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1311 is operating system-dependent. If you want to ensure cross-platform
1312 behaviour, it is recommended you manually override this setting.
1313
1314
Georg Brandl116aa622007-08-15 14:28:22 +00001315.. _socket-example:
1316
1317Example
1318-------
1319
1320Here are four minimal example programs using the TCP/IP protocol: a server that
1321echoes all data that it receives back (servicing only one client), and a client
Ezio Melottic048d982013-04-17 04:10:26 +03001322using it. Note that a server must perform the sequence :func:`.socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001323:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1324repeating the :meth:`~socket.accept` to service more than one client), while a
Ezio Melottic048d982013-04-17 04:10:26 +03001325client only needs the sequence :func:`.socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001326note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1327the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001328:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001329
1330The first two examples support IPv4 only. ::
1331
1332 # Echo server program
1333 import socket
1334
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001335 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001336 PORT = 50007 # Arbitrary non-privileged port
1337 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1338 s.bind((HOST, PORT))
1339 s.listen(1)
1340 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001341 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001342 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001343 data = conn.recv(1024)
1344 if not data: break
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001345 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001346 conn.close()
1347
1348::
1349
1350 # Echo client program
1351 import socket
1352
1353 HOST = 'daring.cwi.nl' # The remote host
1354 PORT = 50007 # The same port as used by the server
1355 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1356 s.connect((HOST, PORT))
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001357 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001358 data = s.recv(1024)
1359 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001360 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001361
1362The next two examples are identical to the above two, but support both IPv4 and
1363IPv6. The server side will listen to the first address family available (it
1364should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1365precedence and the server may not accept IPv4 traffic. The client side will try
1366to connect to the all addresses returned as a result of the name resolution, and
1367sends traffic to the first one connected successfully. ::
1368
1369 # Echo server program
1370 import socket
1371 import sys
1372
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001373 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001374 PORT = 50007 # Arbitrary non-privileged port
1375 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001376 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1377 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001378 af, socktype, proto, canonname, sa = res
1379 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001380 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001381 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001382 s = None
1383 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001384 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001385 s.bind(sa)
1386 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001387 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001388 s.close()
1389 s = None
1390 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001391 break
1392 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001393 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001394 sys.exit(1)
1395 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001396 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001397 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001398 data = conn.recv(1024)
1399 if not data: break
1400 conn.send(data)
1401 conn.close()
1402
1403::
1404
1405 # Echo client program
1406 import socket
1407 import sys
1408
1409 HOST = 'daring.cwi.nl' # The remote host
1410 PORT = 50007 # The same port as used by the server
1411 s = None
1412 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1413 af, socktype, proto, canonname, sa = res
1414 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001415 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001416 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001417 s = None
1418 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001419 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001420 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001421 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001422 s.close()
1423 s = None
1424 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001425 break
1426 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001427 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001428 sys.exit(1)
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001429 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001430 data = s.recv(1024)
1431 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001432 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001433
Georg Brandl48310cd2009-01-03 21:18:54 +00001434
Charles-François Natali47413c12011-10-06 19:47:44 +02001435The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001436sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001437the interface::
1438
1439 import socket
1440
1441 # the public network interface
1442 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001443
Christian Heimesfaf2f632008-01-06 16:59:19 +00001444 # create a raw socket and bind it to the public interface
1445 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1446 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001447
Christian Heimesfaf2f632008-01-06 16:59:19 +00001448 # Include IP headers
1449 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001450
Christian Heimesfaf2f632008-01-06 16:59:19 +00001451 # receive all packages
1452 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001453
Christian Heimesfaf2f632008-01-06 16:59:19 +00001454 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001455 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001456
Christian Heimesc3f30c42008-02-22 16:37:40 +00001457 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001458 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001459
Charles-François Natali47413c12011-10-06 19:47:44 +02001460The last example shows how to use the socket interface to communicate to a CAN
Charles-François Natali773e42d2013-02-05 19:42:01 +01001461network using the raw socket protocol. To use CAN with the broadcast
1462manager protocol instead, open a socket with::
1463
1464 socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1465
1466After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
Mark Dickinsond80b16d2013-02-10 18:43:16 +00001467can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
Charles-François Natali773e42d2013-02-05 19:42:01 +01001468their counterparts) on the socket object as usual.
1469
Donald Stufft8b852f12014-05-20 12:58:38 -04001470This example might require special privileges::
Charles-François Natali47413c12011-10-06 19:47:44 +02001471
1472 import socket
1473 import struct
1474
1475
Georg Brandla673eb82012-03-04 16:17:05 +01001476 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02001477
1478 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001479 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001480
1481 def build_can_frame(can_id, data):
1482 can_dlc = len(data)
1483 data = data.ljust(8, b'\x00')
1484 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1485
1486 def dissect_can_frame(frame):
1487 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1488 return (can_id, can_dlc, data[:can_dlc])
1489
1490
Georg Brandla673eb82012-03-04 16:17:05 +01001491 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02001492 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1493 s.bind(('vcan0',))
1494
1495 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001496 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001497
1498 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1499
1500 try:
1501 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001502 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001503 print('Error sending CAN frame')
1504
1505 try:
1506 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001507 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001508 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001509
Sandro Tosi172f3742011-09-02 20:06:31 +02001510Running an example several times with too small delay between executions, could
1511lead to this error::
1512
Antoine Pitrou5574c302011-10-12 17:53:43 +02001513 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001514
1515This is because the previous execution has left the socket in a ``TIME_WAIT``
1516state, and can't be immediately reused.
1517
1518There is a :mod:`socket` flag to set, in order to prevent this,
1519:data:`socket.SO_REUSEADDR`::
1520
1521 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1522 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1523 s.bind((HOST, PORT))
1524
1525the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1526``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1527
1528
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001529.. seealso::
1530
1531 For an introduction to socket programming (in C), see the following papers:
1532
1533 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1534
1535 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1536 al,
1537
1538 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1539 PS1:7 and PS1:8). The platform-specific reference material for the various
1540 socket-related system calls are also a valuable source of information on the
1541 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1542 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1543 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.