blob: b653c5387ed5af9458039e8187793af68e8399e3 [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
Larry Hastings3732ed22014-03-15 21:13:56 -07009all 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`.
355 Availability: Unix.
356
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100357 The newly created sockets are :ref:`non-inheritable <fd_inheritance>`.
358
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100359 .. versionchanged:: 3.2
360 The returned socket objects now support the whole socket API, rather
361 than a subset.
362
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100363 .. versionchanged:: 3.4
364 The returned sockets are now non-inheritable.
365
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100366
Gregory P. Smithb4066372010-01-03 03:28:29 +0000367.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000368
Antoine Pitrou889a5102012-01-12 08:06:19 +0100369 Connect to a TCP service listening on the Internet *address* (a 2-tuple
370 ``(host, port)``), and return the socket object. This is a higher-level
371 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
372 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
373 and then try to connect to all possible addresses in turn until a
374 connection succeeds. This makes it easy to write clients that are
375 compatible to both IPv4 and IPv6.
376
377 Passing the optional *timeout* parameter will set the timeout on the
378 socket instance before attempting to connect. If no *timeout* is
379 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000380 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000381
Gregory P. Smithb4066372010-01-03 03:28:29 +0000382 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
383 socket to bind to as its source address before connecting. If host or port
384 are '' or 0 respectively the OS default behavior will be used.
385
386 .. versionchanged:: 3.2
387 *source_address* was added.
388
Giampaolo Rodolàb383dbb2010-09-08 22:44:12 +0000389 .. versionchanged:: 3.2
390 support for the :keyword:`with` statement was added.
391
Georg Brandl116aa622007-08-15 14:28:22 +0000392
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100393.. function:: fromfd(fd, family, type, proto=0)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100394
395 Duplicate the file descriptor *fd* (an integer as returned by a file object's
396 :meth:`fileno` method) and build a socket object from the result. Address
397 family, socket type and protocol number are as for the :func:`.socket` function
398 above. The file descriptor should refer to a socket, but this is not checked ---
399 subsequent operations on the object may fail if the file descriptor is invalid.
400 This function is rarely needed, but can be used to get or set socket options on
401 a socket passed to a program as standard input or output (such as a server
402 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
403
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100404 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
405
406 .. versionchanged:: 3.4
407 The returned socket is now non-inheritable.
408
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100409
410.. function:: fromshare(data)
411
412 Instantiate a socket from data obtained from the :meth:`socket.share`
413 method. The socket is assumed to be in blocking mode.
414
415 Availability: Windows.
416
417 .. versionadded:: 3.3
418
419
420.. data:: SocketType
421
422 This is a Python type object that represents the socket object type. It is the
423 same as ``type(socket(...))``.
424
425
426Other functions
427'''''''''''''''
428
429The :mod:`socket` module also offers various network-related services:
430
431
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000432.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000433
Antoine Pitrou91035972010-05-31 17:04:40 +0000434 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
435 all the necessary arguments for creating a socket connected to that service.
436 *host* is a domain name, a string representation of an IPv4/v6 address
437 or ``None``. *port* is a string service name such as ``'http'``, a numeric
438 port number or ``None``. By passing ``None`` as the value of *host*
439 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000440
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000441 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000442 in order to narrow the list of addresses returned. Passing zero as a
443 value for each of these arguments selects the full range of results.
444 The *flags* argument can be one or several of the ``AI_*`` constants,
445 and will influence how results are computed and returned.
446 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
447 and will raise an error if *host* is a domain name.
448
449 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000450
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000451 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000452
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000453 In these tuples, *family*, *type*, *proto* are all integers and are
Ezio Melottic048d982013-04-17 04:10:26 +0300454 meant to be passed to the :func:`.socket` function. *canonname* will be
Antoine Pitrou91035972010-05-31 17:04:40 +0000455 a string representing the canonical name of the *host* if
456 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
457 will be empty. *sockaddr* is a tuple describing a socket address, whose
458 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
459 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
460 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
461 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000462
Antoine Pitrou91035972010-05-31 17:04:40 +0000463 The following example fetches address information for a hypothetical TCP
Ned Deily11cf4f62015-06-01 21:19:30 -0700464 connection to ``example.org`` on port 80 (results may differ on your
Antoine Pitrou91035972010-05-31 17:04:40 +0000465 system if IPv6 isn't enabled)::
466
Ned Deily11cf4f62015-06-01 21:19:30 -0700467 >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
Ned Deily1b79e2d2015-06-01 18:52:48 -0700468 [(<AddressFamily.AF_INET6: 10>, <SocketType.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700469 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
Ned Deily1b79e2d2015-06-01 18:52:48 -0700470 (<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700471 6, '', ('93.184.216.34', 80))]
Georg Brandl116aa622007-08-15 14:28:22 +0000472
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000473 .. versionchanged:: 3.2
Larry Hastings3732ed22014-03-15 21:13:56 -0700474 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
Berker Peksag2a8baed2015-05-19 01:31:00 +0300518 name; use :func:`getfqdn` for that.
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
Larry Hastings3732ed22014-03-15 21:13:56 -0700640 .. 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
Larry Hastings3732ed22014-03-15 21:13:56 -0700659 .. 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::
Larry Hastings3732ed22014-03-15 21:13:56 -0700806
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
913.. method:: socket.listen(backlog)
914
915 Listen for connections made to the socket. The *backlog* argument specifies the
Antoine Pitrou1be815a2011-05-10 19:16:29 +0200916 maximum number of queued connections and should be at least 0; the maximum value
917 is system-dependent (usually 5), the minimum value is forced to 0.
Georg Brandl116aa622007-08-15 14:28:22 +0000918
919
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000920.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
921 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000922
923 .. index:: single: I/O control; buffering
924
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000925 Return a :term:`file object` associated with the socket. The exact returned
926 type depends on the arguments given to :meth:`makefile`. These arguments are
927 interpreted the same way as by the built-in :func:`open` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000928
Antoine Pitroue3658a72013-12-04 21:02:42 +0100929 The socket must be in blocking mode; it can have a timeout, but the file
930 object's internal buffer may end up in a inconsistent state if a timeout
931 occurs.
932
933 Closing the file object returned by :meth:`makefile` won't close the
934 original socket unless all other file objects have been closed and
935 :meth:`socket.close` has been called on the socket object.
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000936
937 .. note::
938
939 On Windows, the file-like object created by :meth:`makefile` cannot be
940 used where a file object with a file descriptor is expected, such as the
941 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000942
Georg Brandl116aa622007-08-15 14:28:22 +0000943
944.. method:: socket.recv(bufsize[, flags])
945
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000946 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +0000947 data received. The maximum amount of data to be received at once is specified
948 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
949 the optional argument *flags*; it defaults to zero.
950
951 .. note::
952
953 For best match with hardware and network realities, the value of *bufsize*
954 should be a relatively small power of 2, for example, 4096.
955
956
957.. method:: socket.recvfrom(bufsize[, flags])
958
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000959 Receive data from the socket. The return value is a pair ``(bytes, address)``
960 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +0000961 address of the socket sending the data. See the Unix manual page
962 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
963 to zero. (The format of *address* depends on the address family --- see above.)
964
965
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000966.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
967
968 Receive normal data (up to *bufsize* bytes) and ancillary data from
969 the socket. The *ancbufsize* argument sets the size in bytes of
970 the internal buffer used to receive the ancillary data; it defaults
971 to 0, meaning that no ancillary data will be received. Appropriate
972 buffer sizes for ancillary data can be calculated using
973 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
974 into the buffer might be truncated or discarded. The *flags*
975 argument defaults to 0 and has the same meaning as for
976 :meth:`recv`.
977
978 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
979 address)``. The *data* item is a :class:`bytes` object holding the
980 non-ancillary data received. The *ancdata* item is a list of zero
981 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
982 the ancillary data (control messages) received: *cmsg_level* and
983 *cmsg_type* are integers specifying the protocol level and
984 protocol-specific type respectively, and *cmsg_data* is a
985 :class:`bytes` object holding the associated data. The *msg_flags*
986 item is the bitwise OR of various flags indicating conditions on
987 the received message; see your system documentation for details.
988 If the receiving socket is unconnected, *address* is the address of
989 the sending socket, if available; otherwise, its value is
990 unspecified.
991
992 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
993 pass file descriptors between processes over an :const:`AF_UNIX`
994 socket. When this facility is used (it is often restricted to
995 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
996 ancillary data, items of the form ``(socket.SOL_SOCKET,
997 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
998 representing the new file descriptors as a binary array of the
999 native C :c:type:`int` type. If :meth:`recvmsg` raises an
1000 exception after the system call returns, it will first attempt to
1001 close any file descriptors received via this mechanism.
1002
1003 Some systems do not indicate the truncated length of ancillary data
1004 items which have been only partially received. If an item appears
1005 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
1006 a :exc:`RuntimeWarning`, and will return the part of it which is
1007 inside the buffer provided it has not been truncated before the
1008 start of its associated data.
1009
1010 On systems which support the :const:`SCM_RIGHTS` mechanism, the
1011 following function will receive up to *maxfds* file descriptors,
1012 returning the message data and a list containing the descriptors
1013 (while ignoring unexpected conditions such as unrelated control
1014 messages being received). See also :meth:`sendmsg`. ::
1015
1016 import socket, array
1017
1018 def recv_fds(sock, msglen, maxfds):
1019 fds = array.array("i") # Array of ints
1020 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1021 for cmsg_level, cmsg_type, cmsg_data in ancdata:
1022 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
1023 # Append data, ignoring any truncated integers at the end.
1024 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
1025 return msg, list(fds)
1026
1027 Availability: most Unix platforms, possibly others.
1028
1029 .. versionadded:: 3.3
1030
1031
1032.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1033
1034 Receive normal data and ancillary data from the socket, behaving as
1035 :meth:`recvmsg` would, but scatter the non-ancillary data into a
1036 series of buffers instead of returning a new bytes object. The
1037 *buffers* argument must be an iterable of objects that export
1038 writable buffers (e.g. :class:`bytearray` objects); these will be
1039 filled with successive chunks of the non-ancillary data until it
1040 has all been written or there are no more buffers. The operating
1041 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1042 on the number of buffers that can be used. The *ancbufsize* and
1043 *flags* arguments have the same meaning as for :meth:`recvmsg`.
1044
1045 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1046 address)``, where *nbytes* is the total number of bytes of
1047 non-ancillary data written into the buffers, and *ancdata*,
1048 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1049
1050 Example::
1051
1052 >>> import socket
1053 >>> s1, s2 = socket.socketpair()
1054 >>> b1 = bytearray(b'----')
1055 >>> b2 = bytearray(b'0123456789')
1056 >>> b3 = bytearray(b'--------------')
1057 >>> s1.send(b'Mary had a little lamb')
1058 22
1059 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1060 (22, [], 0, None)
1061 >>> [b1, b2, b3]
1062 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1063
1064 Availability: most Unix platforms, possibly others.
1065
1066 .. versionadded:: 3.3
1067
1068
Georg Brandl116aa622007-08-15 14:28:22 +00001069.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1070
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001071 Receive data from the socket, writing it into *buffer* instead of creating a
1072 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +00001073 the number of bytes received and *address* is the address of the socket sending
1074 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
1075 optional argument *flags*; it defaults to zero. (The format of *address*
1076 depends on the address family --- see above.)
1077
Georg Brandl116aa622007-08-15 14:28:22 +00001078
1079.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1080
1081 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001082 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +00001083 receive up to the size available in the given buffer. Returns the number of
1084 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
1085 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001086
Georg Brandl116aa622007-08-15 14:28:22 +00001087
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001088.. method:: socket.send(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.
1092 Returns the number of bytes sent. Applications are responsible for checking that
1093 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001094 application needs to attempt delivery of the remaining data. For further
1095 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +00001096
1097
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001098.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001099
1100 Send data to the socket. The socket must be connected to a remote socket. The
1101 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001102 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001103 either all data has been sent or an error occurs. ``None`` is returned on
1104 success. On error, an exception is raised, and there is no way to determine how
1105 much data, if any, was successfully sent.
1106
1107
Ezio Melottie0add762012-09-14 06:32:35 +03001108.. method:: socket.sendto(bytes, address)
1109 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001110
1111 Send data to the socket. The socket should not be connected to a remote socket,
1112 since the destination socket is specified by *address*. The optional *flags*
1113 argument has the same meaning as for :meth:`recv` above. Return the number of
1114 bytes sent. (The format of *address* depends on the address family --- see
1115 above.)
1116
1117
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001118.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1119
1120 Send normal and ancillary data to the socket, gathering the
1121 non-ancillary data from a series of buffers and concatenating it
1122 into a single message. The *buffers* argument specifies the
Serhiy Storchakab757c832014-12-05 22:25:22 +02001123 non-ancillary data as an iterable of
1124 :term:`bytes-like objects <bytes-like object>`
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001125 (e.g. :class:`bytes` objects); the operating system may set a limit
1126 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1127 that can be used. The *ancdata* argument specifies the ancillary
1128 data (control messages) as an iterable of zero or more tuples
1129 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1130 *cmsg_type* are integers specifying the protocol level and
1131 protocol-specific type respectively, and *cmsg_data* is a
Serhiy Storchakab757c832014-12-05 22:25:22 +02001132 bytes-like object holding the associated data. Note that
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001133 some systems (in particular, systems without :func:`CMSG_SPACE`)
1134 might support sending only one control message per call. The
1135 *flags* argument defaults to 0 and has the same meaning as for
1136 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1137 destination address for the message. The return value is the
1138 number of bytes of non-ancillary data sent.
1139
1140 The following function sends the list of file descriptors *fds*
1141 over an :const:`AF_UNIX` socket, on systems which support the
1142 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1143
1144 import socket, array
1145
1146 def send_fds(sock, msg, fds):
1147 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1148
1149 Availability: most Unix platforms, possibly others.
1150
1151 .. versionadded:: 3.3
1152
1153
Victor Stinnerdaf45552013-08-28 00:53:59 +02001154.. method:: socket.set_inheritable(inheritable)
1155
1156 Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1157 descriptor or socket's handle.
1158
1159 .. versionadded:: 3.4
1160
1161
Georg Brandl116aa622007-08-15 14:28:22 +00001162.. method:: socket.setblocking(flag)
1163
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001164 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1165 socket is set to non-blocking, else to blocking mode.
1166
1167 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1168
1169 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1170
1171 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001172
1173
1174.. method:: socket.settimeout(value)
1175
1176 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001177 nonnegative floating point number expressing seconds, or ``None``.
1178 If a non-zero value is given, subsequent socket operations will raise a
1179 :exc:`timeout` exception if the timeout period *value* has elapsed before
1180 the operation has completed. If zero is given, the socket is put in
1181 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001182
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001183 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001184
1185
1186.. method:: socket.setsockopt(level, optname, value)
1187
1188 .. index:: module: struct
1189
1190 Set the value of the given socket option (see the Unix manual page
1191 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
1192 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001193 bytes object representing a buffer. In the latter case it is up to the caller to
1194 ensure that the bytestring contains the proper bits (see the optional built-in
1195 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001196
1197
1198.. method:: socket.shutdown(how)
1199
1200 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1201 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1202 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001203 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001204
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001205
1206.. method:: socket.share(process_id)
1207
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001208 Duplicate a socket and prepare it for sharing with a target process. The
1209 target process must be provided with *process_id*. The resulting bytes object
1210 can then be passed to the target process using some form of interprocess
1211 communication and the socket can be recreated there using :func:`fromshare`.
1212 Once this method has been called, it is safe to close the socket since
1213 the operating system has already duplicated it for the target process.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001214
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001215 Availability: Windows.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001216
1217 .. versionadded:: 3.3
1218
1219
Georg Brandl8569e582010-05-19 20:57:08 +00001220Note that there are no methods :meth:`read` or :meth:`write`; use
1221:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001222
1223Socket objects also have these (read-only) attributes that correspond to the
1224values given to the :class:`socket` constructor.
1225
1226
1227.. attribute:: socket.family
1228
1229 The socket family.
1230
Georg Brandl116aa622007-08-15 14:28:22 +00001231
1232.. attribute:: socket.type
1233
1234 The socket type.
1235
Georg Brandl116aa622007-08-15 14:28:22 +00001236
1237.. attribute:: socket.proto
1238
1239 The socket protocol.
1240
Georg Brandl116aa622007-08-15 14:28:22 +00001241
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001242
1243.. _socket-timeouts:
1244
1245Notes on socket timeouts
1246------------------------
1247
1248A socket object can be in one of three modes: blocking, non-blocking, or
1249timeout. Sockets are by default always created in blocking mode, but this
1250can be changed by calling :func:`setdefaulttimeout`.
1251
1252* In *blocking mode*, operations block until complete or the system returns
1253 an error (such as connection timed out).
1254
1255* In *non-blocking mode*, operations fail (with an error that is unfortunately
1256 system-dependent) if they cannot be completed immediately: functions from the
1257 :mod:`select` can be used to know when and whether a socket is available for
1258 reading or writing.
1259
1260* In *timeout mode*, operations fail if they cannot be completed within the
1261 timeout specified for the socket (they raise a :exc:`timeout` exception)
1262 or if the system returns an error.
1263
1264.. note::
1265 At the operating system level, sockets in *timeout mode* are internally set
1266 in non-blocking mode. Also, the blocking and timeout modes are shared between
1267 file descriptors and socket objects that refer to the same network endpoint.
1268 This implementation detail can have visible consequences if e.g. you decide
1269 to use the :meth:`~socket.fileno()` of a socket.
1270
1271Timeouts and the ``connect`` method
1272^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1273
1274The :meth:`~socket.connect` operation is also subject to the timeout
1275setting, and in general it is recommended to call :meth:`~socket.settimeout`
1276before calling :meth:`~socket.connect` or pass a timeout parameter to
1277:meth:`create_connection`. However, the system network stack may also
1278return a connection timeout error of its own regardless of any Python socket
1279timeout setting.
1280
1281Timeouts and the ``accept`` method
1282^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1283
1284If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1285the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1286behaviour depends on settings of the listening socket:
1287
1288* if the listening socket is in *blocking mode* or in *timeout mode*,
1289 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1290
1291* if the listening socket is in *non-blocking mode*, whether the socket
1292 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1293 is operating system-dependent. If you want to ensure cross-platform
1294 behaviour, it is recommended you manually override this setting.
1295
1296
Georg Brandl116aa622007-08-15 14:28:22 +00001297.. _socket-example:
1298
1299Example
1300-------
1301
1302Here are four minimal example programs using the TCP/IP protocol: a server that
1303echoes all data that it receives back (servicing only one client), and a client
Ezio Melottic048d982013-04-17 04:10:26 +03001304using it. Note that a server must perform the sequence :func:`.socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001305:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1306repeating the :meth:`~socket.accept` to service more than one client), while a
Ezio Melottic048d982013-04-17 04:10:26 +03001307client only needs the sequence :func:`.socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001308note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1309the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001310:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001311
1312The first two examples support IPv4 only. ::
1313
1314 # Echo server program
1315 import socket
1316
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001317 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001318 PORT = 50007 # Arbitrary non-privileged port
1319 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1320 s.bind((HOST, PORT))
1321 s.listen(1)
1322 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001323 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001324 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001325 data = conn.recv(1024)
1326 if not data: break
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001327 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001328 conn.close()
1329
1330::
1331
1332 # Echo client program
1333 import socket
1334
1335 HOST = 'daring.cwi.nl' # The remote host
1336 PORT = 50007 # The same port as used by the server
1337 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1338 s.connect((HOST, PORT))
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001339 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001340 data = s.recv(1024)
1341 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001342 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001343
1344The next two examples are identical to the above two, but support both IPv4 and
1345IPv6. The server side will listen to the first address family available (it
1346should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1347precedence and the server may not accept IPv4 traffic. The client side will try
1348to connect to the all addresses returned as a result of the name resolution, and
1349sends traffic to the first one connected successfully. ::
1350
1351 # Echo server program
1352 import socket
1353 import sys
1354
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001355 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001356 PORT = 50007 # Arbitrary non-privileged port
1357 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001358 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1359 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001360 af, socktype, proto, canonname, sa = res
1361 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001362 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001363 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001364 s = None
1365 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001366 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001367 s.bind(sa)
1368 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001369 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001370 s.close()
1371 s = None
1372 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001373 break
1374 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001375 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001376 sys.exit(1)
1377 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001378 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001379 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001380 data = conn.recv(1024)
1381 if not data: break
1382 conn.send(data)
1383 conn.close()
1384
1385::
1386
1387 # Echo client program
1388 import socket
1389 import sys
1390
1391 HOST = 'daring.cwi.nl' # The remote host
1392 PORT = 50007 # The same port as used by the server
1393 s = None
1394 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1395 af, socktype, proto, canonname, sa = res
1396 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001397 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001398 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001399 s = None
1400 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001401 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001402 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001403 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001404 s.close()
1405 s = None
1406 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001407 break
1408 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001409 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001410 sys.exit(1)
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001411 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001412 data = s.recv(1024)
1413 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001414 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001415
Georg Brandl48310cd2009-01-03 21:18:54 +00001416
Charles-François Natali47413c12011-10-06 19:47:44 +02001417The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001418sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001419the interface::
1420
1421 import socket
1422
1423 # the public network interface
1424 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001425
Christian Heimesfaf2f632008-01-06 16:59:19 +00001426 # create a raw socket and bind it to the public interface
1427 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1428 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001429
Christian Heimesfaf2f632008-01-06 16:59:19 +00001430 # Include IP headers
1431 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001432
Christian Heimesfaf2f632008-01-06 16:59:19 +00001433 # receive all packages
1434 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001435
Christian Heimesfaf2f632008-01-06 16:59:19 +00001436 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001437 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001438
Christian Heimesc3f30c42008-02-22 16:37:40 +00001439 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001440 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001441
Charles-François Natali47413c12011-10-06 19:47:44 +02001442The last example shows how to use the socket interface to communicate to a CAN
Charles-François Natali773e42d2013-02-05 19:42:01 +01001443network using the raw socket protocol. To use CAN with the broadcast
1444manager protocol instead, open a socket with::
1445
1446 socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1447
1448After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
Mark Dickinsond80b16d2013-02-10 18:43:16 +00001449can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
Charles-François Natali773e42d2013-02-05 19:42:01 +01001450their counterparts) on the socket object as usual.
1451
1452This example might require special priviledge::
Charles-François Natali47413c12011-10-06 19:47:44 +02001453
1454 import socket
1455 import struct
1456
1457
Georg Brandla673eb82012-03-04 16:17:05 +01001458 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02001459
1460 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001461 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001462
1463 def build_can_frame(can_id, data):
1464 can_dlc = len(data)
1465 data = data.ljust(8, b'\x00')
1466 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1467
1468 def dissect_can_frame(frame):
1469 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1470 return (can_id, can_dlc, data[:can_dlc])
1471
1472
Georg Brandla673eb82012-03-04 16:17:05 +01001473 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02001474 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1475 s.bind(('vcan0',))
1476
1477 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001478 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001479
1480 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1481
1482 try:
1483 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001484 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001485 print('Error sending CAN frame')
1486
1487 try:
1488 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001489 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001490 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001491
Sandro Tosi172f3742011-09-02 20:06:31 +02001492Running an example several times with too small delay between executions, could
1493lead to this error::
1494
Antoine Pitrou5574c302011-10-12 17:53:43 +02001495 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001496
1497This is because the previous execution has left the socket in a ``TIME_WAIT``
1498state, and can't be immediately reused.
1499
1500There is a :mod:`socket` flag to set, in order to prevent this,
1501:data:`socket.SO_REUSEADDR`::
1502
1503 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1504 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1505 s.bind((HOST, PORT))
1506
1507the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1508``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1509
1510
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001511.. seealso::
1512
1513 For an introduction to socket programming (in C), see the following papers:
1514
1515 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1516
1517 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1518 al,
1519
1520 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1521 PS1:7 and PS1:8). The platform-specific reference material for the various
1522 socket-related system calls are also a valuable source of information on the
1523 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1524 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1525 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.