blob: 638a77e8549ed387c63ccfb58a986aee5b9f718a [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
Martin Panterd1a98582015-09-09 06:47:58 +0000106- :const:`AF_BLUETOOTH` supports the following protocols and address
107 formats:
108
109 - :const:`BTPROTO_L2CAP` accepts ``(bdaddr, psm)`` where ``bdaddr`` is
110 the Bluetooth address as a string and ``psm`` is an integer.
111
112 - :const:`BTPROTO_RFCOMM` accepts ``(bdaddr, channel)`` where ``bdaddr``
113 is the Bluetooth address as a string and ``channel`` is an integer.
114
115 - :const:`BTPROTO_HCI` accepts ``(device_id,)`` where ``device_id`` is
116 either an integer or a string with the Bluetooth address of the
117 interface. (This depends on your OS; NetBSD and DragonFlyBSD expect
118 a Bluetooth address while everything else expects an integer.)
119
120 .. versionchanged:: 3.2
121 NetBSD and DragonFlyBSD support added.
122
123 - :const:`BTPROTO_SCO` accepts ``bdaddr`` where ``bdaddr`` is a
Martin Panterd8302622015-09-11 02:23:41 +0000124 :class:`bytes` object containing the Bluetooth address in a
Martin Panterd1a98582015-09-09 06:47:58 +0000125 string format. (ex. ``b'12:23:34:45:56:67'``) This protocol is not
126 supported under FreeBSD.
127
128- Certain other address families (:const:`AF_PACKET`, :const:`AF_CAN`)
129 support specific representations.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000130
131 .. XXX document them!
Georg Brandl116aa622007-08-15 14:28:22 +0000132
133For IPv4 addresses, two special forms are accepted instead of a host address:
134the empty string represents :const:`INADDR_ANY`, and the string
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000135``'<broadcast>'`` represents :const:`INADDR_BROADCAST`. This behavior is not
136compatible with IPv6, therefore, you may want to avoid these if you intend
137to support IPv6 with your Python programs.
Georg Brandl116aa622007-08-15 14:28:22 +0000138
139If you use a hostname in the *host* portion of IPv4/v6 socket address, the
140program may show a nondeterministic behavior, as Python uses the first address
141returned from the DNS resolution. The socket address will be resolved
142differently into an actual IPv4/v6 address, depending on the results from DNS
143resolution and/or the host configuration. For deterministic behavior use a
144numeric address in *host* portion.
145
Georg Brandl116aa622007-08-15 14:28:22 +0000146All errors raise exceptions. The normal exceptions for invalid argument types
Antoine Pitrou5574c302011-10-12 17:53:43 +0200147and out-of-memory conditions can be raised; starting from Python 3.3, errors
148related to socket or address semantics raise :exc:`OSError` or one of its
149subclasses (they used to raise :exc:`socket.error`).
Georg Brandl116aa622007-08-15 14:28:22 +0000150
Georg Brandl8569e582010-05-19 20:57:08 +0000151Non-blocking mode is supported through :meth:`~socket.setblocking`. A
152generalization of this based on timeouts is supported through
153:meth:`~socket.settimeout`.
Georg Brandl116aa622007-08-15 14:28:22 +0000154
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000155
156Module contents
157---------------
158
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100159The module :mod:`socket` exports the following elements.
Georg Brandl116aa622007-08-15 14:28:22 +0000160
161
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100162Exceptions
163^^^^^^^^^^
164
Georg Brandl116aa622007-08-15 14:28:22 +0000165.. exception:: error
166
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200167 A deprecated alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000168
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200169 .. versionchanged:: 3.3
170 Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000171
172
173.. exception:: herror
174
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200175 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000176 address-related errors, i.e. for functions that use *h_errno* in the POSIX
177 C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
178 The accompanying value is a pair ``(h_errno, string)`` representing an
179 error returned by a library call. *h_errno* is a numeric value, while
180 *string* represents the description of *h_errno*, as returned by the
181 :c:func:`hstrerror` C function.
Georg Brandl116aa622007-08-15 14:28:22 +0000182
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200183 .. versionchanged:: 3.3
184 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000185
186.. exception:: gaierror
187
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200188 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000189 address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
190 The accompanying value is a pair ``(error, string)`` representing an error
191 returned by a library call. *string* represents the description of
192 *error*, as returned by the :c:func:`gai_strerror` C function. The
193 numeric *error* value will match one of the :const:`EAI_\*` constants
194 defined in this module.
Georg Brandl116aa622007-08-15 14:28:22 +0000195
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200196 .. versionchanged:: 3.3
197 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000198
199.. exception:: timeout
200
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200201 A subclass of :exc:`OSError`, this exception is raised when a timeout
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000202 occurs on a socket which has had timeouts enabled via a prior call to
203 :meth:`~socket.settimeout` (or implicitly through
204 :func:`~socket.setdefaulttimeout`). The accompanying value is a string
205 whose value is currently always "timed out".
Georg Brandl116aa622007-08-15 14:28:22 +0000206
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200207 .. versionchanged:: 3.3
208 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000209
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100210
211Constants
212^^^^^^^^^
213
Ethan Furman7184bac2014-10-14 18:56:53 -0700214 The AF_* and SOCK_* constants are now :class:`AddressFamily` and
215 :class:`SocketKind` :class:`.IntEnum` collections.
216
217 .. versionadded:: 3.4
218
Georg Brandl116aa622007-08-15 14:28:22 +0000219.. data:: AF_UNIX
220 AF_INET
221 AF_INET6
222
223 These constants represent the address (and protocol) families, used for the
Ezio Melottic048d982013-04-17 04:10:26 +0300224 first argument to :func:`.socket`. If the :const:`AF_UNIX` constant is not
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000225 defined then this protocol is unsupported. More constants may be available
226 depending on the system.
Georg Brandl116aa622007-08-15 14:28:22 +0000227
228
229.. data:: SOCK_STREAM
230 SOCK_DGRAM
231 SOCK_RAW
232 SOCK_RDM
233 SOCK_SEQPACKET
234
235 These constants represent the socket types, used for the second argument to
Ezio Melottic048d982013-04-17 04:10:26 +0300236 :func:`.socket`. More constants may be available depending on the system.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000237 (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
238 useful.)
Georg Brandl116aa622007-08-15 14:28:22 +0000239
Antoine Pitroub1c54962010-10-14 15:05:38 +0000240.. data:: SOCK_CLOEXEC
241 SOCK_NONBLOCK
242
243 These two constants, if defined, can be combined with the socket types and
244 allow you to set some flags atomically (thus avoiding possible race
245 conditions and the need for separate calls).
246
247 .. seealso::
248
249 `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
250 for a more thorough explanation.
251
252 Availability: Linux >= 2.6.27.
253
254 .. versionadded:: 3.2
Georg Brandl116aa622007-08-15 14:28:22 +0000255
256.. data:: SO_*
257 SOMAXCONN
258 MSG_*
259 SOL_*
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000260 SCM_*
Georg Brandl116aa622007-08-15 14:28:22 +0000261 IPPROTO_*
262 IPPORT_*
263 INADDR_*
264 IP_*
265 IPV6_*
266 EAI_*
267 AI_*
268 NI_*
269 TCP_*
270
271 Many constants of these forms, documented in the Unix documentation on sockets
272 and/or the IP protocol, are also defined in the socket module. They are
273 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
274 methods of socket objects. In most cases, only those symbols that are defined
275 in the Unix header files are defined; for a few symbols, default values are
276 provided.
277
Charles-François Natali47413c12011-10-06 19:47:44 +0200278.. data:: AF_CAN
279 PF_CAN
280 SOL_CAN_*
281 CAN_*
282
283 Many constants of these forms, documented in the Linux documentation, are
284 also defined in the socket module.
285
286 Availability: Linux >= 2.6.25.
287
288 .. versionadded:: 3.3
289
Charles-François Natali773e42d2013-02-05 19:42:01 +0100290.. data:: CAN_BCM
291 CAN_BCM_*
292
293 CAN_BCM, in the CAN protocol family, is the broadcast manager (BCM) protocol.
294 Broadcast manager constants, documented in the Linux documentation, are also
295 defined in the socket module.
296
297 Availability: Linux >= 2.6.25.
298
299 .. versionadded:: 3.4
Charles-François Natali47413c12011-10-06 19:47:44 +0200300
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100301.. data:: AF_RDS
302 PF_RDS
303 SOL_RDS
304 RDS_*
305
306 Many constants of these forms, documented in the Linux documentation, are
307 also defined in the socket module.
308
309 Availability: Linux >= 2.6.30.
310
311 .. versionadded:: 3.3
312
313
Christian Heimesfaf2f632008-01-06 16:59:19 +0000314.. data:: SIO_*
315 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000316
Christian Heimesfaf2f632008-01-06 16:59:19 +0000317 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
Serhiy Storchakabfdcd432013-10-13 23:09:14 +0300318 :meth:`~socket.socket.ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000319
Georg Brandl116aa622007-08-15 14:28:22 +0000320
Christian Heimes043d6f62008-01-07 17:19:16 +0000321.. data:: TIPC_*
322
323 TIPC related constants, matching the ones exported by the C socket API. See
324 the TIPC documentation for more information.
325
Giampaolo Rodola'80e1c432013-05-21 21:02:04 +0200326.. data:: AF_LINK
327
328 Availability: BSD, OSX.
329
330 .. versionadded:: 3.4
Christian Heimes043d6f62008-01-07 17:19:16 +0000331
Georg Brandl116aa622007-08-15 14:28:22 +0000332.. data:: has_ipv6
333
334 This constant contains a boolean value which indicates if IPv6 is supported on
335 this platform.
336
Martin Panterea7266d2015-09-11 23:14:57 +0000337.. data:: BDADDR_ANY
338 BDADDR_LOCAL
339
340 These are string constants containing Bluetooth addresses with special
341 meanings. For example, :const:`BDADDR_ANY` can be used to indicate
342 any address when specifying the binding socket with
343 :const:`BTPROTO_RFCOMM`.
344
345.. data:: HCI_FILTER
346 HCI_TIME_STAMP
347 HCI_DATA_DIR
348
349 For use with :const:`BTPROTO_HCI`. :const:`HCI_FILTER` is not
350 available for NetBSD or DragonFlyBSD. :const:`HCI_TIME_STAMP` and
351 :const:`HCI_DATA_DIR` are not available for FreeBSD, NetBSD, or
352 DragonFlyBSD.
Georg Brandl116aa622007-08-15 14:28:22 +0000353
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100354Functions
355^^^^^^^^^
356
357Creating sockets
358''''''''''''''''
359
360The following functions all create :ref:`socket objects <socket-objects>`.
361
362
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100363.. function:: socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100364
365 Create a new socket using the given address family, socket type and protocol
366 number. The address family should be :const:`AF_INET` (the default),
367 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
368 socket type should be :const:`SOCK_STREAM` (the default),
369 :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100370 constants. The protocol number is usually zero and may be omitted or in the
371 case where the address family is :const:`AF_CAN` the protocol should be one
Berker Peksag24a61092015-10-08 06:34:01 +0300372 of :const:`CAN_RAW` or :const:`CAN_BCM`. If *fileno* is specified, the other
373 arguments are ignored, causing the socket with the specified file descriptor
374 to return. Unlike :func:`socket.fromfd`, *fileno* will return the same
375 socket and not a duplicate. This may help close a detached socket using
376 :meth:`socket.close()`.
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100377
378 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100379
380 .. versionchanged:: 3.3
381 The AF_CAN family was added.
382 The AF_RDS family was added.
383
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100384 .. versionchanged:: 3.4
385 The CAN_BCM protocol was added.
386
387 .. versionchanged:: 3.4
388 The returned socket is now non-inheritable.
389
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100390
391.. function:: socketpair([family[, type[, proto]]])
392
393 Build a pair of connected socket objects using the given address family, socket
394 type, and protocol number. Address family, socket type, and protocol number are
395 as for the :func:`.socket` function above. The default family is :const:`AF_UNIX`
396 if defined on the platform; otherwise, the default is :const:`AF_INET`.
397 Availability: Unix.
398
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100399 The newly created sockets are :ref:`non-inheritable <fd_inheritance>`.
400
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100401 .. versionchanged:: 3.2
402 The returned socket objects now support the whole socket API, rather
403 than a subset.
404
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100405 .. versionchanged:: 3.4
406 The returned sockets are now non-inheritable.
407
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100408
Gregory P. Smithb4066372010-01-03 03:28:29 +0000409.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000410
Antoine Pitrou889a5102012-01-12 08:06:19 +0100411 Connect to a TCP service listening on the Internet *address* (a 2-tuple
412 ``(host, port)``), and return the socket object. This is a higher-level
413 function than :meth:`socket.connect`: if *host* is a non-numeric hostname,
414 it will try to resolve it for both :data:`AF_INET` and :data:`AF_INET6`,
415 and then try to connect to all possible addresses in turn until a
416 connection succeeds. This makes it easy to write clients that are
417 compatible to both IPv4 and IPv6.
418
419 Passing the optional *timeout* parameter will set the timeout on the
420 socket instance before attempting to connect. If no *timeout* is
421 supplied, the global default timeout setting returned by
Georg Brandlf78e02b2008-06-10 17:40:04 +0000422 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000423
Gregory P. Smithb4066372010-01-03 03:28:29 +0000424 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
425 socket to bind to as its source address before connecting. If host or port
426 are '' or 0 respectively the OS default behavior will be used.
427
428 .. versionchanged:: 3.2
429 *source_address* was added.
430
Giampaolo Rodolàb383dbb2010-09-08 22:44:12 +0000431 .. versionchanged:: 3.2
432 support for the :keyword:`with` statement was added.
433
Georg Brandl116aa622007-08-15 14:28:22 +0000434
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100435.. function:: fromfd(fd, family, type, proto=0)
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100436
437 Duplicate the file descriptor *fd* (an integer as returned by a file object's
438 :meth:`fileno` method) and build a socket object from the result. Address
439 family, socket type and protocol number are as for the :func:`.socket` function
440 above. The file descriptor should refer to a socket, but this is not checked ---
441 subsequent operations on the object may fail if the file descriptor is invalid.
442 This function is rarely needed, but can be used to get or set socket options on
443 a socket passed to a program as standard input or output (such as a server
444 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
445
Antoine Pitrouf9c54942013-12-04 21:15:24 +0100446 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
447
448 .. versionchanged:: 3.4
449 The returned socket is now non-inheritable.
450
Antoine Pitroua5cc9d62013-12-04 21:11:03 +0100451
452.. function:: fromshare(data)
453
454 Instantiate a socket from data obtained from the :meth:`socket.share`
455 method. The socket is assumed to be in blocking mode.
456
457 Availability: Windows.
458
459 .. versionadded:: 3.3
460
461
462.. data:: SocketType
463
464 This is a Python type object that represents the socket object type. It is the
465 same as ``type(socket(...))``.
466
467
468Other functions
469'''''''''''''''
470
471The :mod:`socket` module also offers various network-related services:
472
473
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000474.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000475
Antoine Pitrou91035972010-05-31 17:04:40 +0000476 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
477 all the necessary arguments for creating a socket connected to that service.
478 *host* is a domain name, a string representation of an IPv4/v6 address
479 or ``None``. *port* is a string service name such as ``'http'``, a numeric
480 port number or ``None``. By passing ``None`` as the value of *host*
481 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000482
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000483 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000484 in order to narrow the list of addresses returned. Passing zero as a
485 value for each of these arguments selects the full range of results.
486 The *flags* argument can be one or several of the ``AI_*`` constants,
487 and will influence how results are computed and returned.
488 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
489 and will raise an error if *host* is a domain name.
490
491 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000492
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000493 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000494
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000495 In these tuples, *family*, *type*, *proto* are all integers and are
Ezio Melottic048d982013-04-17 04:10:26 +0300496 meant to be passed to the :func:`.socket` function. *canonname* will be
Antoine Pitrou91035972010-05-31 17:04:40 +0000497 a string representing the canonical name of the *host* if
498 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
499 will be empty. *sockaddr* is a tuple describing a socket address, whose
500 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
501 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
502 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
503 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000504
Antoine Pitrou91035972010-05-31 17:04:40 +0000505 The following example fetches address information for a hypothetical TCP
Ned Deily11cf4f62015-06-01 21:19:30 -0700506 connection to ``example.org`` on port 80 (results may differ on your
Antoine Pitrou91035972010-05-31 17:04:40 +0000507 system if IPv6 isn't enabled)::
508
Ned Deily11cf4f62015-06-01 21:19:30 -0700509 >>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
Ned Deily1b79e2d2015-06-01 18:52:48 -0700510 [(<AddressFamily.AF_INET6: 10>, <SocketType.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700511 6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
Ned Deily1b79e2d2015-06-01 18:52:48 -0700512 (<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>,
Ned Deily11cf4f62015-06-01 21:19:30 -0700513 6, '', ('93.184.216.34', 80))]
Georg Brandl116aa622007-08-15 14:28:22 +0000514
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000515 .. versionchanged:: 3.2
Larry Hastings3732ed22014-03-15 21:13:56 -0700516 parameters can now be passed using keyword arguments.
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000517
Georg Brandl116aa622007-08-15 14:28:22 +0000518.. function:: getfqdn([name])
519
520 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
521 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000522 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000523 host, if available. The first name which includes a period is selected. In
524 case no fully qualified domain name is available, the hostname as returned by
525 :func:`gethostname` is returned.
526
Georg Brandl116aa622007-08-15 14:28:22 +0000527
528.. function:: gethostbyname(hostname)
529
530 Translate a host name to IPv4 address format. The IPv4 address is returned as a
531 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
532 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
533 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
534 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
535
536
537.. function:: gethostbyname_ex(hostname)
538
539 Translate a host name to IPv4 address format, extended interface. Return a
540 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
541 host name responding to the given *ip_address*, *aliaslist* is a (possibly
542 empty) list of alternative host names for the same address, and *ipaddrlist* is
543 a list of IPv4 addresses for the same interface on the same host (often but not
544 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
545 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
546 stack support.
547
548
549.. function:: gethostname()
550
551 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000552 interpreter is currently executing.
553
554 If you want to know the current machine's IP address, you may want to use
555 ``gethostbyname(gethostname())``. This operation assumes that there is a
556 valid address-to-host mapping for the host, and the assumption does not
557 always hold.
558
559 Note: :func:`gethostname` doesn't always return the fully qualified domain
Berker Peksag2a8baed2015-05-19 01:31:00 +0300560 name; use :func:`getfqdn` for that.
Georg Brandl116aa622007-08-15 14:28:22 +0000561
562
563.. function:: gethostbyaddr(ip_address)
564
565 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
566 primary host name responding to the given *ip_address*, *aliaslist* is a
567 (possibly empty) list of alternative host names for the same address, and
568 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
569 host (most likely containing only a single address). To find the fully qualified
570 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
571 both IPv4 and IPv6.
572
573
574.. function:: getnameinfo(sockaddr, flags)
575
576 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
577 on the settings of *flags*, the result can contain a fully-qualified domain name
578 or numeric address representation in *host*. Similarly, *port* can contain a
579 string port name or a numeric port number.
580
Georg Brandl116aa622007-08-15 14:28:22 +0000581
582.. function:: getprotobyname(protocolname)
583
584 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
Ezio Melottic048d982013-04-17 04:10:26 +0300585 suitable for passing as the (optional) third argument to the :func:`.socket`
Georg Brandl116aa622007-08-15 14:28:22 +0000586 function. This is usually only needed for sockets opened in "raw" mode
587 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
588 automatically if the protocol is omitted or zero.
589
590
591.. function:: getservbyname(servicename[, protocolname])
592
593 Translate an Internet service name and protocol name to a port number for that
594 service. The optional protocol name, if given, should be ``'tcp'`` or
595 ``'udp'``, otherwise any protocol will match.
596
597
598.. function:: getservbyport(port[, protocolname])
599
600 Translate an Internet port number and protocol name to a service name for that
601 service. The optional protocol name, if given, should be ``'tcp'`` or
602 ``'udp'``, otherwise any protocol will match.
603
604
Georg Brandl116aa622007-08-15 14:28:22 +0000605.. function:: ntohl(x)
606
607 Convert 32-bit positive integers from network to host byte order. On machines
608 where the host byte order is the same as network byte order, this is a no-op;
609 otherwise, it performs a 4-byte swap operation.
610
611
612.. function:: ntohs(x)
613
614 Convert 16-bit positive integers from network to host byte order. On machines
615 where the host byte order is the same as network byte order, this is a no-op;
616 otherwise, it performs a 2-byte swap operation.
617
618
619.. function:: htonl(x)
620
621 Convert 32-bit positive integers from host to network byte order. On machines
622 where the host byte order is the same as network byte order, this is a no-op;
623 otherwise, it performs a 4-byte swap operation.
624
625
626.. function:: htons(x)
627
628 Convert 16-bit positive integers from host to network byte order. On machines
629 where the host byte order is the same as network byte order, this is a no-op;
630 otherwise, it performs a 2-byte swap operation.
631
632
633.. function:: inet_aton(ip_string)
634
635 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000636 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000637 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000638 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000639 for the 32-bit packed binary this function returns.
640
Georg Brandlf5123ef2009-06-04 10:28:36 +0000641 :func:`inet_aton` also accepts strings with less than three dots; see the
642 Unix manual page :manpage:`inet(3)` for details.
643
Georg Brandl116aa622007-08-15 14:28:22 +0000644 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200645 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000646 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000647
Georg Brandl5f259722009-05-04 20:50:30 +0000648 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000649 instead for IPv4/v6 dual stack support.
650
651
652.. function:: inet_ntoa(packed_ip)
653
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000654 Convert a 32-bit packed IPv4 address (a bytes object four characters in
655 length) to its standard dotted-quad string representation (for example,
656 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000657 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000658 is the C type for the 32-bit packed binary data this function takes as an
659 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000660
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000661 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200662 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000663 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000664 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000665
666
667.. function:: inet_pton(address_family, ip_string)
668
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000669 Convert an IP address from its family-specific string format to a packed,
670 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000671 calls for an object of type :c:type:`struct in_addr` (similar to
672 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000673
674 Supported values for *address_family* are currently :const:`AF_INET` and
675 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200676 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000677 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000678 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000679
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900680 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000681
Larry Hastings3732ed22014-03-15 21:13:56 -0700682 .. versionchanged:: 3.4
683 Windows support added
684
Georg Brandl116aa622007-08-15 14:28:22 +0000685
686.. function:: inet_ntop(address_family, packed_ip)
687
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000688 Convert a packed IP address (a bytes object of some number of characters) to its
Georg Brandl116aa622007-08-15 14:28:22 +0000689 standard, family-specific string representation (for example, ``'7.10.0.5'`` or
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000690 ``'5aef:2b::8'``). :func:`inet_ntop` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000691 returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`)
692 or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000693
694 Supported values for *address_family* are currently :const:`AF_INET` and
695 :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the
696 specified address family, :exc:`ValueError` will be raised. A
Antoine Pitrou5574c302011-10-12 17:53:43 +0200697 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000698
Atsuo Ishimotoda0fc142012-07-16 15:16:54 +0900699 Availability: Unix (maybe not all platforms), Windows.
Georg Brandl116aa622007-08-15 14:28:22 +0000700
Larry Hastings3732ed22014-03-15 21:13:56 -0700701 .. versionchanged:: 3.4
702 Windows support added
703
Georg Brandl116aa622007-08-15 14:28:22 +0000704
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000705..
706 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
707 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
708 interface, in which struct msghdr has no msg_control or
709 msg_controllen members, is not currently supported.
710
711.. function:: CMSG_LEN(length)
712
713 Return the total length, without trailing padding, of an ancillary
714 data item with associated data of the given *length*. This value
715 can often be used as the buffer size for :meth:`~socket.recvmsg` to
716 receive a single item of ancillary data, but :rfc:`3542` requires
717 portable applications to use :func:`CMSG_SPACE` and thus include
718 space for padding, even when the item will be the last in the
719 buffer. Raises :exc:`OverflowError` if *length* is outside the
720 permissible range of values.
721
722 Availability: most Unix platforms, possibly others.
723
724 .. versionadded:: 3.3
725
726
727.. function:: CMSG_SPACE(length)
728
729 Return the buffer size needed for :meth:`~socket.recvmsg` to
730 receive an ancillary data item with associated data of the given
731 *length*, along with any trailing padding. The buffer space needed
732 to receive multiple items is the sum of the :func:`CMSG_SPACE`
733 values for their associated data lengths. Raises
734 :exc:`OverflowError` if *length* is outside the permissible range
735 of values.
736
737 Note that some systems might support ancillary data without
738 providing this function. Also note that setting the buffer size
739 using the results of this function may not precisely limit the
740 amount of ancillary data that can be received, since additional
741 data may be able to fit into the padding area.
742
743 Availability: most Unix platforms, possibly others.
744
745 .. versionadded:: 3.3
746
747
Georg Brandl116aa622007-08-15 14:28:22 +0000748.. function:: getdefaulttimeout()
749
Ezio Melotti388c9452011-08-14 08:28:57 +0300750 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000751 of ``None`` indicates that new socket objects have no timeout. When the socket
752 module is first imported, the default is ``None``.
753
Georg Brandl116aa622007-08-15 14:28:22 +0000754
755.. function:: setdefaulttimeout(timeout)
756
Ezio Melotti388c9452011-08-14 08:28:57 +0300757 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000758 the socket module is first imported, the default is ``None``. See
759 :meth:`~socket.settimeout` for possible values and their respective
760 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000761
Georg Brandl116aa622007-08-15 14:28:22 +0000762
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000763.. function:: sethostname(name)
764
765 Set the machine's hostname to *name*. This will raise a
Antoine Pitrou5574c302011-10-12 17:53:43 +0200766 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000767
768 Availability: Unix.
769
770 .. versionadded:: 3.3
771
772
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700773.. function:: if_nameindex()
774
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700775 Return a list of network interface information
776 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200777 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700778
779 Availability: Unix.
780
781 .. versionadded:: 3.3
782
783
784.. function:: if_nametoindex(if_name)
785
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700786 Return a network interface index number corresponding to an
787 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200788 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700789
790 Availability: Unix.
791
792 .. versionadded:: 3.3
793
794
795.. function:: if_indextoname(if_index)
796
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700797 Return a network interface name corresponding to a
798 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200799 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700800
801 Availability: Unix.
802
803 .. versionadded:: 3.3
804
805
Georg Brandl116aa622007-08-15 14:28:22 +0000806.. _socket-objects:
807
808Socket Objects
809--------------
810
Antoine Pitroue3658a72013-12-04 21:02:42 +0100811Socket objects have the following methods. Except for
812:meth:`~socket.makefile`, these correspond to Unix system calls applicable
813to sockets.
Georg Brandl116aa622007-08-15 14:28:22 +0000814
815
816.. method:: socket.accept()
817
818 Accept a connection. The socket must be bound to an address and listening for
819 connections. The return value is a pair ``(conn, address)`` where *conn* is a
820 *new* socket object usable to send and receive data on the connection, and
821 *address* is the address bound to the socket on the other end of the connection.
822
Victor Stinnerdaf45552013-08-28 00:53:59 +0200823 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
824
825 .. versionchanged:: 3.4
826 The socket is now non-inheritable.
827
Georg Brandl116aa622007-08-15 14:28:22 +0000828
829.. method:: socket.bind(address)
830
831 Bind the socket to *address*. The socket must not already be bound. (The format
832 of *address* depends on the address family --- see above.)
833
Georg Brandl116aa622007-08-15 14:28:22 +0000834
835.. method:: socket.close()
836
Antoine Pitroue3658a72013-12-04 21:02:42 +0100837 Mark the socket closed. The underlying system resource (e.g. a file
838 descriptor) is also closed when all file objects from :meth:`makefile()`
839 are closed. Once that happens, all future operations on the socket
840 object will fail. The remote end will receive no more data (after
841 queued data is flushed).
842
843 Sockets are automatically closed when they are garbage-collected, but
844 it is recommended to :meth:`close` them explicitly, or to use a
845 :keyword:`with` statement around them.
Georg Brandl116aa622007-08-15 14:28:22 +0000846
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000847 .. note::
Larry Hastings3732ed22014-03-15 21:13:56 -0700848
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000849 :meth:`close()` releases the resource associated with a connection but
850 does not necessarily close the connection immediately. If you want
851 to close the connection in a timely fashion, call :meth:`shutdown()`
852 before :meth:`close()`.
853
Georg Brandl116aa622007-08-15 14:28:22 +0000854
855.. method:: socket.connect(address)
856
857 Connect to a remote socket at *address*. (The format of *address* depends on the
858 address family --- see above.)
859
Georg Brandl116aa622007-08-15 14:28:22 +0000860
861.. method:: socket.connect_ex(address)
862
863 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +0000864 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +0000865 problems, such as "host not found," can still raise exceptions). The error
866 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +0000867 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +0000868 connects.
869
Georg Brandl116aa622007-08-15 14:28:22 +0000870
Antoine Pitrou6e451df2010-08-09 20:39:54 +0000871.. method:: socket.detach()
872
873 Put the socket object into closed state without actually closing the
874 underlying file descriptor. The file descriptor is returned, and can
875 be reused for other purposes.
876
877 .. versionadded:: 3.2
878
879
Victor Stinnerdaf45552013-08-28 00:53:59 +0200880.. method:: socket.dup()
881
882 Duplicate the socket.
883
884 The newly created socket is :ref:`non-inheritable <fd_inheritance>`.
885
886 .. versionchanged:: 3.4
887 The socket is now non-inheritable.
888
889
Georg Brandl116aa622007-08-15 14:28:22 +0000890.. method:: socket.fileno()
891
892 Return the socket's file descriptor (a small integer). This is useful with
893 :func:`select.select`.
894
895 Under Windows the small integer returned by this method cannot be used where a
896 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
897 this limitation.
898
899
Victor Stinnerdaf45552013-08-28 00:53:59 +0200900.. method:: socket.get_inheritable()
901
902 Get the :ref:`inheritable flag <fd_inheritance>` of the socket's file
903 descriptor or socket's handle: ``True`` if the socket can be inherited in
904 child processes, ``False`` if it cannot.
905
906 .. versionadded:: 3.4
907
908
Georg Brandl116aa622007-08-15 14:28:22 +0000909.. method:: socket.getpeername()
910
911 Return the remote address to which the socket is connected. This is useful to
912 find out the port number of a remote IPv4/v6 socket, for instance. (The format
913 of the address returned depends on the address family --- see above.) On some
914 systems this function is not supported.
915
916
917.. method:: socket.getsockname()
918
919 Return the socket's own address. This is useful to find out the port number of
920 an IPv4/v6 socket, for instance. (The format of the address returned depends on
921 the address family --- see above.)
922
923
924.. method:: socket.getsockopt(level, optname[, buflen])
925
926 Return the value of the given socket option (see the Unix man page
927 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
928 are defined in this module. If *buflen* is absent, an integer option is assumed
929 and its integer value is returned by the function. If *buflen* is present, it
930 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000931 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +0000932 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000933 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +0000934
Georg Brandl48310cd2009-01-03 21:18:54 +0000935
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000936.. method:: socket.gettimeout()
937
Ezio Melotti388c9452011-08-14 08:28:57 +0300938 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000939 or ``None`` if no timeout is set. This reflects the last call to
940 :meth:`setblocking` or :meth:`settimeout`.
941
942
Christian Heimesfaf2f632008-01-06 16:59:19 +0000943.. method:: socket.ioctl(control, option)
944
Georg Brandl48310cd2009-01-03 21:18:54 +0000945 :platform: Windows
946
Christian Heimes679db4a2008-01-18 09:56:22 +0000947 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +0000948 interface. Please refer to the `Win32 documentation
949 <http://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
950 information.
Georg Brandl48310cd2009-01-03 21:18:54 +0000951
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000952 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
953 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000954
955.. method:: socket.listen(backlog)
956
957 Listen for connections made to the socket. The *backlog* argument specifies the
Antoine Pitrou1be815a2011-05-10 19:16:29 +0200958 maximum number of queued connections and should be at least 0; the maximum value
959 is system-dependent (usually 5), the minimum value is forced to 0.
Georg Brandl116aa622007-08-15 14:28:22 +0000960
961
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000962.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
963 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000964
965 .. index:: single: I/O control; buffering
966
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000967 Return a :term:`file object` associated with the socket. The exact returned
968 type depends on the arguments given to :meth:`makefile`. These arguments are
969 interpreted the same way as by the built-in :func:`open` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000970
Antoine Pitroue3658a72013-12-04 21:02:42 +0100971 The socket must be in blocking mode; it can have a timeout, but the file
972 object's internal buffer may end up in a inconsistent state if a timeout
973 occurs.
974
975 Closing the file object returned by :meth:`makefile` won't close the
976 original socket unless all other file objects have been closed and
977 :meth:`socket.close` has been called on the socket object.
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000978
979 .. note::
980
981 On Windows, the file-like object created by :meth:`makefile` cannot be
982 used where a file object with a file descriptor is expected, such as the
983 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000984
Georg Brandl116aa622007-08-15 14:28:22 +0000985
986.. method:: socket.recv(bufsize[, flags])
987
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000988 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +0000989 data received. The maximum amount of data to be received at once is specified
990 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
991 the optional argument *flags*; it defaults to zero.
992
993 .. note::
994
995 For best match with hardware and network realities, the value of *bufsize*
996 should be a relatively small power of 2, for example, 4096.
997
998
999.. method:: socket.recvfrom(bufsize[, flags])
1000
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001001 Receive data from the socket. The return value is a pair ``(bytes, address)``
1002 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +00001003 address of the socket sending the data. See the Unix manual page
1004 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
1005 to zero. (The format of *address* depends on the address family --- see above.)
1006
1007
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001008.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
1009
1010 Receive normal data (up to *bufsize* bytes) and ancillary data from
1011 the socket. The *ancbufsize* argument sets the size in bytes of
1012 the internal buffer used to receive the ancillary data; it defaults
1013 to 0, meaning that no ancillary data will be received. Appropriate
1014 buffer sizes for ancillary data can be calculated using
1015 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
1016 into the buffer might be truncated or discarded. The *flags*
1017 argument defaults to 0 and has the same meaning as for
1018 :meth:`recv`.
1019
1020 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
1021 address)``. The *data* item is a :class:`bytes` object holding the
1022 non-ancillary data received. The *ancdata* item is a list of zero
1023 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
1024 the ancillary data (control messages) received: *cmsg_level* and
1025 *cmsg_type* are integers specifying the protocol level and
1026 protocol-specific type respectively, and *cmsg_data* is a
1027 :class:`bytes` object holding the associated data. The *msg_flags*
1028 item is the bitwise OR of various flags indicating conditions on
1029 the received message; see your system documentation for details.
1030 If the receiving socket is unconnected, *address* is the address of
1031 the sending socket, if available; otherwise, its value is
1032 unspecified.
1033
1034 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
1035 pass file descriptors between processes over an :const:`AF_UNIX`
1036 socket. When this facility is used (it is often restricted to
1037 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
1038 ancillary data, items of the form ``(socket.SOL_SOCKET,
1039 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
1040 representing the new file descriptors as a binary array of the
1041 native C :c:type:`int` type. If :meth:`recvmsg` raises an
1042 exception after the system call returns, it will first attempt to
1043 close any file descriptors received via this mechanism.
1044
1045 Some systems do not indicate the truncated length of ancillary data
1046 items which have been only partially received. If an item appears
1047 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
1048 a :exc:`RuntimeWarning`, and will return the part of it which is
1049 inside the buffer provided it has not been truncated before the
1050 start of its associated data.
1051
1052 On systems which support the :const:`SCM_RIGHTS` mechanism, the
1053 following function will receive up to *maxfds* file descriptors,
1054 returning the message data and a list containing the descriptors
1055 (while ignoring unexpected conditions such as unrelated control
1056 messages being received). See also :meth:`sendmsg`. ::
1057
1058 import socket, array
1059
1060 def recv_fds(sock, msglen, maxfds):
1061 fds = array.array("i") # Array of ints
1062 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
1063 for cmsg_level, cmsg_type, cmsg_data in ancdata:
1064 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
1065 # Append data, ignoring any truncated integers at the end.
1066 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
1067 return msg, list(fds)
1068
1069 Availability: most Unix platforms, possibly others.
1070
1071 .. versionadded:: 3.3
1072
1073
1074.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
1075
1076 Receive normal data and ancillary data from the socket, behaving as
1077 :meth:`recvmsg` would, but scatter the non-ancillary data into a
1078 series of buffers instead of returning a new bytes object. The
1079 *buffers* argument must be an iterable of objects that export
1080 writable buffers (e.g. :class:`bytearray` objects); these will be
1081 filled with successive chunks of the non-ancillary data until it
1082 has all been written or there are no more buffers. The operating
1083 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
1084 on the number of buffers that can be used. The *ancbufsize* and
1085 *flags* arguments have the same meaning as for :meth:`recvmsg`.
1086
1087 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
1088 address)``, where *nbytes* is the total number of bytes of
1089 non-ancillary data written into the buffers, and *ancdata*,
1090 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
1091
1092 Example::
1093
1094 >>> import socket
1095 >>> s1, s2 = socket.socketpair()
1096 >>> b1 = bytearray(b'----')
1097 >>> b2 = bytearray(b'0123456789')
1098 >>> b3 = bytearray(b'--------------')
1099 >>> s1.send(b'Mary had a little lamb')
1100 22
1101 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
1102 (22, [], 0, None)
1103 >>> [b1, b2, b3]
1104 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
1105
1106 Availability: most Unix platforms, possibly others.
1107
1108 .. versionadded:: 3.3
1109
1110
Georg Brandl116aa622007-08-15 14:28:22 +00001111.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
1112
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001113 Receive data from the socket, writing it into *buffer* instead of creating a
1114 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +00001115 the number of bytes received and *address* is the address of the socket sending
1116 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
1117 optional argument *flags*; it defaults to zero. (The format of *address*
1118 depends on the address family --- see above.)
1119
Georg Brandl116aa622007-08-15 14:28:22 +00001120
1121.. method:: socket.recv_into(buffer[, nbytes[, flags]])
1122
1123 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001124 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +00001125 receive up to the size available in the given buffer. Returns the number of
1126 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
1127 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +00001128
Georg Brandl116aa622007-08-15 14:28:22 +00001129
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001130.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001131
1132 Send data to the socket. The socket must be connected to a remote socket. The
1133 optional *flags* argument has the same meaning as for :meth:`recv` above.
1134 Returns the number of bytes sent. Applications are responsible for checking that
1135 all data has been sent; if only some of the data was transmitted, the
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001136 application needs to attempt delivery of the remaining data. For further
1137 information on this topic, consult the :ref:`socket-howto`.
Georg Brandl116aa622007-08-15 14:28:22 +00001138
1139
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001140.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +00001141
1142 Send data to the socket. The socket must be connected to a remote socket. The
1143 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001144 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +00001145 either all data has been sent or an error occurs. ``None`` is returned on
1146 success. On error, an exception is raised, and there is no way to determine how
1147 much data, if any, was successfully sent.
1148
1149
Ezio Melottie0add762012-09-14 06:32:35 +03001150.. method:: socket.sendto(bytes, address)
1151 socket.sendto(bytes, flags, address)
Georg Brandl116aa622007-08-15 14:28:22 +00001152
1153 Send data to the socket. The socket should not be connected to a remote socket,
1154 since the destination socket is specified by *address*. The optional *flags*
1155 argument has the same meaning as for :meth:`recv` above. Return the number of
1156 bytes sent. (The format of *address* depends on the address family --- see
1157 above.)
1158
1159
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001160.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
1161
1162 Send normal and ancillary data to the socket, gathering the
1163 non-ancillary data from a series of buffers and concatenating it
1164 into a single message. The *buffers* argument specifies the
Serhiy Storchakab757c832014-12-05 22:25:22 +02001165 non-ancillary data as an iterable of
1166 :term:`bytes-like objects <bytes-like object>`
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001167 (e.g. :class:`bytes` objects); the operating system may set a limit
1168 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
1169 that can be used. The *ancdata* argument specifies the ancillary
1170 data (control messages) as an iterable of zero or more tuples
1171 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1172 *cmsg_type* are integers specifying the protocol level and
1173 protocol-specific type respectively, and *cmsg_data* is a
Serhiy Storchakab757c832014-12-05 22:25:22 +02001174 bytes-like object holding the associated data. Note that
Nick Coghlan96fe56a2011-08-22 11:55:57 +10001175 some systems (in particular, systems without :func:`CMSG_SPACE`)
1176 might support sending only one control message per call. The
1177 *flags* argument defaults to 0 and has the same meaning as for
1178 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1179 destination address for the message. The return value is the
1180 number of bytes of non-ancillary data sent.
1181
1182 The following function sends the list of file descriptors *fds*
1183 over an :const:`AF_UNIX` socket, on systems which support the
1184 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1185
1186 import socket, array
1187
1188 def send_fds(sock, msg, fds):
1189 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1190
1191 Availability: most Unix platforms, possibly others.
1192
1193 .. versionadded:: 3.3
1194
1195
Victor Stinnerdaf45552013-08-28 00:53:59 +02001196.. method:: socket.set_inheritable(inheritable)
1197
1198 Set the :ref:`inheritable flag <fd_inheritance>` of the socket's file
1199 descriptor or socket's handle.
1200
1201 .. versionadded:: 3.4
1202
1203
Georg Brandl116aa622007-08-15 14:28:22 +00001204.. method:: socket.setblocking(flag)
1205
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001206 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1207 socket is set to non-blocking, else to blocking mode.
1208
1209 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1210
1211 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1212
1213 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001214
1215
1216.. method:: socket.settimeout(value)
1217
1218 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001219 nonnegative floating point number expressing seconds, or ``None``.
1220 If a non-zero value is given, subsequent socket operations will raise a
1221 :exc:`timeout` exception if the timeout period *value* has elapsed before
1222 the operation has completed. If zero is given, the socket is put in
1223 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001224
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001225 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001226
1227
1228.. method:: socket.setsockopt(level, optname, value)
1229
1230 .. index:: module: struct
1231
1232 Set the value of the given socket option (see the Unix manual page
1233 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
1234 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001235 bytes object representing a buffer. In the latter case it is up to the caller to
1236 ensure that the bytestring contains the proper bits (see the optional built-in
1237 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001238
1239
1240.. method:: socket.shutdown(how)
1241
1242 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1243 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1244 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Charles-François Natalicdc878e2012-01-29 16:42:54 +01001245 disallowed.
Georg Brandl116aa622007-08-15 14:28:22 +00001246
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001247
1248.. method:: socket.share(process_id)
1249
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001250 Duplicate a socket and prepare it for sharing with a target process. The
1251 target process must be provided with *process_id*. The resulting bytes object
1252 can then be passed to the target process using some form of interprocess
1253 communication and the socket can be recreated there using :func:`fromshare`.
1254 Once this method has been called, it is safe to close the socket since
1255 the operating system has already duplicated it for the target process.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001256
Antoine Pitroua5cc9d62013-12-04 21:11:03 +01001257 Availability: Windows.
Kristján Valur Jónsson10f383a2012-04-07 11:23:31 +00001258
1259 .. versionadded:: 3.3
1260
1261
Georg Brandl8569e582010-05-19 20:57:08 +00001262Note that there are no methods :meth:`read` or :meth:`write`; use
1263:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001264
1265Socket objects also have these (read-only) attributes that correspond to the
1266values given to the :class:`socket` constructor.
1267
1268
1269.. attribute:: socket.family
1270
1271 The socket family.
1272
Georg Brandl116aa622007-08-15 14:28:22 +00001273
1274.. attribute:: socket.type
1275
1276 The socket type.
1277
Georg Brandl116aa622007-08-15 14:28:22 +00001278
1279.. attribute:: socket.proto
1280
1281 The socket protocol.
1282
Georg Brandl116aa622007-08-15 14:28:22 +00001283
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001284
1285.. _socket-timeouts:
1286
1287Notes on socket timeouts
1288------------------------
1289
1290A socket object can be in one of three modes: blocking, non-blocking, or
1291timeout. Sockets are by default always created in blocking mode, but this
1292can be changed by calling :func:`setdefaulttimeout`.
1293
1294* In *blocking mode*, operations block until complete or the system returns
1295 an error (such as connection timed out).
1296
1297* In *non-blocking mode*, operations fail (with an error that is unfortunately
1298 system-dependent) if they cannot be completed immediately: functions from the
1299 :mod:`select` can be used to know when and whether a socket is available for
1300 reading or writing.
1301
1302* In *timeout mode*, operations fail if they cannot be completed within the
1303 timeout specified for the socket (they raise a :exc:`timeout` exception)
1304 or if the system returns an error.
1305
1306.. note::
1307 At the operating system level, sockets in *timeout mode* are internally set
1308 in non-blocking mode. Also, the blocking and timeout modes are shared between
1309 file descriptors and socket objects that refer to the same network endpoint.
1310 This implementation detail can have visible consequences if e.g. you decide
1311 to use the :meth:`~socket.fileno()` of a socket.
1312
1313Timeouts and the ``connect`` method
1314^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1315
1316The :meth:`~socket.connect` operation is also subject to the timeout
1317setting, and in general it is recommended to call :meth:`~socket.settimeout`
1318before calling :meth:`~socket.connect` or pass a timeout parameter to
1319:meth:`create_connection`. However, the system network stack may also
1320return a connection timeout error of its own regardless of any Python socket
1321timeout setting.
1322
1323Timeouts and the ``accept`` method
1324^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1325
1326If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1327the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1328behaviour depends on settings of the listening socket:
1329
1330* if the listening socket is in *blocking mode* or in *timeout mode*,
1331 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1332
1333* if the listening socket is in *non-blocking mode*, whether the socket
1334 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1335 is operating system-dependent. If you want to ensure cross-platform
1336 behaviour, it is recommended you manually override this setting.
1337
1338
Georg Brandl116aa622007-08-15 14:28:22 +00001339.. _socket-example:
1340
1341Example
1342-------
1343
1344Here are four minimal example programs using the TCP/IP protocol: a server that
1345echoes all data that it receives back (servicing only one client), and a client
Ezio Melottic048d982013-04-17 04:10:26 +03001346using it. Note that a server must perform the sequence :func:`.socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001347:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1348repeating the :meth:`~socket.accept` to service more than one client), while a
Ezio Melottic048d982013-04-17 04:10:26 +03001349client only needs the sequence :func:`.socket`, :meth:`~socket.connect`. Also
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001350note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
1351the socket it is listening on but on the new socket returned by
Georg Brandl8569e582010-05-19 20:57:08 +00001352:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001353
1354The first two examples support IPv4 only. ::
1355
1356 # Echo server program
1357 import socket
1358
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001359 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001360 PORT = 50007 # Arbitrary non-privileged port
1361 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1362 s.bind((HOST, PORT))
1363 s.listen(1)
1364 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001365 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001366 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001367 data = conn.recv(1024)
1368 if not data: break
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001369 conn.sendall(data)
Georg Brandl116aa622007-08-15 14:28:22 +00001370 conn.close()
1371
1372::
1373
1374 # Echo client program
1375 import socket
1376
1377 HOST = 'daring.cwi.nl' # The remote host
1378 PORT = 50007 # The same port as used by the server
1379 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1380 s.connect((HOST, PORT))
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001381 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001382 data = s.recv(1024)
1383 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001384 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001385
1386The next two examples are identical to the above two, but support both IPv4 and
1387IPv6. The server side will listen to the first address family available (it
1388should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1389precedence and the server may not accept IPv4 traffic. The client side will try
1390to connect to the all addresses returned as a result of the name resolution, and
1391sends traffic to the first one connected successfully. ::
1392
1393 # Echo server program
1394 import socket
1395 import sys
1396
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001397 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001398 PORT = 50007 # Arbitrary non-privileged port
1399 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001400 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1401 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001402 af, socktype, proto, canonname, sa = res
1403 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001404 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001405 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001406 s = None
1407 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001408 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001409 s.bind(sa)
1410 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001411 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001412 s.close()
1413 s = None
1414 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001415 break
1416 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001417 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001418 sys.exit(1)
1419 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001420 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001421 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001422 data = conn.recv(1024)
1423 if not data: break
1424 conn.send(data)
1425 conn.close()
1426
1427::
1428
1429 # Echo client program
1430 import socket
1431 import sys
1432
1433 HOST = 'daring.cwi.nl' # The remote host
1434 PORT = 50007 # The same port as used by the server
1435 s = None
1436 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1437 af, socktype, proto, canonname, sa = res
1438 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001439 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001440 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001441 s = None
1442 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001443 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001444 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001445 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001446 s.close()
1447 s = None
1448 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001449 break
1450 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001451 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001452 sys.exit(1)
Senthil Kumaran6e13f132012-02-09 17:54:17 +08001453 s.sendall(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001454 data = s.recv(1024)
1455 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001456 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001457
Georg Brandl48310cd2009-01-03 21:18:54 +00001458
Charles-François Natali47413c12011-10-06 19:47:44 +02001459The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001460sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001461the interface::
1462
1463 import socket
1464
1465 # the public network interface
1466 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001467
Christian Heimesfaf2f632008-01-06 16:59:19 +00001468 # create a raw socket and bind it to the public interface
1469 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1470 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001471
Christian Heimesfaf2f632008-01-06 16:59:19 +00001472 # Include IP headers
1473 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001474
Christian Heimesfaf2f632008-01-06 16:59:19 +00001475 # receive all packages
1476 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001477
Christian Heimesfaf2f632008-01-06 16:59:19 +00001478 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001479 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001480
Christian Heimesc3f30c42008-02-22 16:37:40 +00001481 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001482 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001483
Charles-François Natali47413c12011-10-06 19:47:44 +02001484The last example shows how to use the socket interface to communicate to a CAN
Charles-François Natali773e42d2013-02-05 19:42:01 +01001485network using the raw socket protocol. To use CAN with the broadcast
1486manager protocol instead, open a socket with::
1487
1488 socket.socket(socket.AF_CAN, socket.SOCK_DGRAM, socket.CAN_BCM)
1489
1490After binding (:const:`CAN_RAW`) or connecting (:const:`CAN_BCM`) the socket, you
Mark Dickinsond80b16d2013-02-10 18:43:16 +00001491can use the :meth:`socket.send`, and the :meth:`socket.recv` operations (and
Charles-François Natali773e42d2013-02-05 19:42:01 +01001492their counterparts) on the socket object as usual.
1493
Senthil Kumaranb4760ef2015-06-14 17:35:37 -07001494This example might require special privileges::
Charles-François Natali47413c12011-10-06 19:47:44 +02001495
1496 import socket
1497 import struct
1498
1499
Georg Brandla673eb82012-03-04 16:17:05 +01001500 # CAN frame packing/unpacking (see 'struct can_frame' in <linux/can.h>)
Charles-François Natali47413c12011-10-06 19:47:44 +02001501
1502 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001503 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001504
1505 def build_can_frame(can_id, data):
1506 can_dlc = len(data)
1507 data = data.ljust(8, b'\x00')
1508 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1509
1510 def dissect_can_frame(frame):
1511 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1512 return (can_id, can_dlc, data[:can_dlc])
1513
1514
Georg Brandla673eb82012-03-04 16:17:05 +01001515 # create a raw socket and bind it to the 'vcan0' interface
Charles-François Natali47413c12011-10-06 19:47:44 +02001516 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1517 s.bind(('vcan0',))
1518
1519 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001520 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001521
1522 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1523
1524 try:
1525 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001526 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001527 print('Error sending CAN frame')
1528
1529 try:
1530 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001531 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001532 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001533
Sandro Tosi172f3742011-09-02 20:06:31 +02001534Running an example several times with too small delay between executions, could
1535lead to this error::
1536
Antoine Pitrou5574c302011-10-12 17:53:43 +02001537 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001538
1539This is because the previous execution has left the socket in a ``TIME_WAIT``
1540state, and can't be immediately reused.
1541
1542There is a :mod:`socket` flag to set, in order to prevent this,
1543:data:`socket.SO_REUSEADDR`::
1544
1545 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1546 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1547 s.bind((HOST, PORT))
1548
1549the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1550``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1551
1552
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001553.. seealso::
1554
1555 For an introduction to socket programming (in C), see the following papers:
1556
1557 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1558
1559 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1560 al,
1561
1562 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1563 PS1:7 and PS1:8). The platform-specific reference material for the various
1564 socket-related system calls are also a valuable source of information on the
1565 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1566 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1567 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.