blob: 77f5bb8636d3255ae99579c86b0823377dea8111 [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001:mod:`socket` --- Low-level networking interface
2================================================
3
4.. module:: socket
5 :synopsis: Low-level networking interface.
6
7
8This module provides access to the BSD *socket* interface. It is available on
Skip Montanaroeb33e5a2007-08-17 12:57:41 +00009all modern Unix systems, Windows, MacOS, OS/2, and probably additional
Georg Brandl116aa622007-08-15 14:28:22 +000010platforms.
11
12.. note::
13
14 Some behavior may be platform dependent, since calls are made to the operating
15 system socket APIs.
16
Georg Brandl116aa622007-08-15 14:28:22 +000017.. index:: object: socket
18
19The Python interface is a straightforward transliteration of the Unix system
20call and library interface for sockets to Python's object-oriented style: the
21:func:`socket` function returns a :dfn:`socket object` whose methods implement
22the various socket system calls. Parameter types are somewhat higher-level than
23in the C interface: as with :meth:`read` and :meth:`write` operations on Python
24files, buffer allocation on receive operations is automatic, and buffer length
25is implicit on send operations.
26
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000027
Antoine Pitroue1bc8982011-01-02 22:12:22 +000028.. seealso::
29
30 Module :mod:`socketserver`
31 Classes that simplify writing network servers.
32
33 Module :mod:`ssl`
34 A TLS/SSL wrapper for socket objects.
35
36
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000037Socket families
38---------------
39
40Depending on the system and the build options, various socket families
41are supported by this module.
42
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010043The address format required by a particular socket object is automatically
44selected based on the address family specified when the socket object was
45created. Socket addresses are represented as follows:
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000046
Antoine Pitrou6ec29e22011-12-16 14:46:36 +010047- The address of an :const:`AF_UNIX` socket bound to a file system node
48 is represented as a string, using the file system encoding and the
49 ``'surrogateescape'`` error handler (see :pep:`383`). An address in
50 Linux's abstract namespace is returned as a :class:`bytes` object with
51 an initial null byte; note that sockets in this namespace can
52 communicate with normal file system sockets, so programs intended to
53 run on Linux may need to deal with both types of address. A string or
54 :class:`bytes` object can be used for either type of address when
55 passing it as an argument.
56
57 .. versionchanged:: 3.3
58 Previously, :const:`AF_UNIX` socket paths were assumed to use UTF-8
59 encoding.
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000060
61- A pair ``(host, port)`` is used for the :const:`AF_INET` address family,
62 where *host* is a string representing either a hostname in Internet domain
63 notation like ``'daring.cwi.nl'`` or an IPv4 address like ``'100.50.200.5'``,
64 and *port* is an integral port number.
65
66- For :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo,
67 scopeid)`` is used, where *flowinfo* and *scopeid* represent the ``sin6_flowinfo``
68 and ``sin6_scope_id`` members in :const:`struct sockaddr_in6` in C. For
69 :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for
70 backward compatibility. Note, however, omission of *scopeid* can cause problems
71 in manipulating scoped IPv6 addresses.
72
73- :const:`AF_NETLINK` sockets are represented as pairs ``(pid, groups)``.
74
75- Linux-only support for TIPC is available using the :const:`AF_TIPC`
76 address family. TIPC is an open, non-IP based networked protocol designed
77 for use in clustered computer environments. Addresses are represented by a
78 tuple, and the fields depend on the address type. The general tuple form is
79 ``(addr_type, v1, v2, v3 [, scope])``, where:
80
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010081 - *addr_type* is one of :const:`TIPC_ADDR_NAMESEQ`, :const:`TIPC_ADDR_NAME`,
82 or :const:`TIPC_ADDR_ID`.
83 - *scope* is one of :const:`TIPC_ZONE_SCOPE`, :const:`TIPC_CLUSTER_SCOPE`, and
84 :const:`TIPC_NODE_SCOPE`.
85 - If *addr_type* is :const:`TIPC_ADDR_NAME`, then *v1* is the server type, *v2* is
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000086 the port identifier, and *v3* should be 0.
87
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010088 If *addr_type* is :const:`TIPC_ADDR_NAMESEQ`, then *v1* is the server type, *v2*
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000089 is the lower port number, and *v3* is the upper port number.
90
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010091 If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000092 reference, and *v3* should be set to 0.
93
Éric Araujoc4d7d8c2011-11-29 16:46:38 +010094 If *addr_type* is :const:`TIPC_ADDR_ID`, then *v1* is the node, *v2* is the
Antoine Pitrou7bdfe772010-12-12 20:57:12 +000095 reference, and *v3* should be set to 0.
96
Charles-François Natali47413c12011-10-06 19:47:44 +020097- A tuple ``(interface, )`` is used for the :const:`AF_CAN` address family,
98 where *interface* is a string representing a network interface name like
99 ``'can0'``. The network interface name ``''`` can be used to receive packets
100 from all network interfaces of this family.
101
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000102- Certain other address families (:const:`AF_BLUETOOTH`, :const:`AF_PACKET`)
103 support specific representations.
104
105 .. XXX document them!
Georg Brandl116aa622007-08-15 14:28:22 +0000106
107For IPv4 addresses, two special forms are accepted instead of a host address:
108the empty string represents :const:`INADDR_ANY`, and the string
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000109``'<broadcast>'`` represents :const:`INADDR_BROADCAST`. This behavior is not
110compatible with IPv6, therefore, you may want to avoid these if you intend
111to support IPv6 with your Python programs.
Georg Brandl116aa622007-08-15 14:28:22 +0000112
113If you use a hostname in the *host* portion of IPv4/v6 socket address, the
114program may show a nondeterministic behavior, as Python uses the first address
115returned from the DNS resolution. The socket address will be resolved
116differently into an actual IPv4/v6 address, depending on the results from DNS
117resolution and/or the host configuration. For deterministic behavior use a
118numeric address in *host* portion.
119
Georg Brandl116aa622007-08-15 14:28:22 +0000120All errors raise exceptions. The normal exceptions for invalid argument types
Antoine Pitrou5574c302011-10-12 17:53:43 +0200121and out-of-memory conditions can be raised; starting from Python 3.3, errors
122related to socket or address semantics raise :exc:`OSError` or one of its
123subclasses (they used to raise :exc:`socket.error`).
Georg Brandl116aa622007-08-15 14:28:22 +0000124
Georg Brandl8569e582010-05-19 20:57:08 +0000125Non-blocking mode is supported through :meth:`~socket.setblocking`. A
126generalization of this based on timeouts is supported through
127:meth:`~socket.settimeout`.
Georg Brandl116aa622007-08-15 14:28:22 +0000128
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000129
130Module contents
131---------------
132
Georg Brandl116aa622007-08-15 14:28:22 +0000133The module :mod:`socket` exports the following constants and functions:
134
135
136.. exception:: error
137
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200138 A deprecated alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000139
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200140 .. versionchanged:: 3.3
141 Following :pep:`3151`, this class was made an alias of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000142
143
144.. exception:: herror
145
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200146 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000147 address-related errors, i.e. for functions that use *h_errno* in the POSIX
148 C API, including :func:`gethostbyname_ex` and :func:`gethostbyaddr`.
149 The accompanying value is a pair ``(h_errno, string)`` representing an
150 error returned by a library call. *h_errno* is a numeric value, while
151 *string* represents the description of *h_errno*, as returned by the
152 :c:func:`hstrerror` C function.
Georg Brandl116aa622007-08-15 14:28:22 +0000153
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200154 .. versionchanged:: 3.3
155 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000156
157.. exception:: gaierror
158
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200159 A subclass of :exc:`OSError`, this exception is raised for
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000160 address-related errors by :func:`getaddrinfo` and :func:`getnameinfo`.
161 The accompanying value is a pair ``(error, string)`` representing an error
162 returned by a library call. *string* represents the description of
163 *error*, as returned by the :c:func:`gai_strerror` C function. The
164 numeric *error* value will match one of the :const:`EAI_\*` constants
165 defined in this module.
Georg Brandl116aa622007-08-15 14:28:22 +0000166
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200167 .. versionchanged:: 3.3
168 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000169
170.. exception:: timeout
171
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200172 A subclass of :exc:`OSError`, this exception is raised when a timeout
Antoine Pitrouf06576d2011-02-28 22:38:07 +0000173 occurs on a socket which has had timeouts enabled via a prior call to
174 :meth:`~socket.settimeout` (or implicitly through
175 :func:`~socket.setdefaulttimeout`). The accompanying value is a string
176 whose value is currently always "timed out".
Georg Brandl116aa622007-08-15 14:28:22 +0000177
Antoine Pitrou70fa31c2011-10-12 16:20:53 +0200178 .. versionchanged:: 3.3
179 This class was made a subclass of :exc:`OSError`.
Georg Brandl116aa622007-08-15 14:28:22 +0000180
181.. data:: AF_UNIX
182 AF_INET
183 AF_INET6
184
185 These constants represent the address (and protocol) families, used for the
186 first argument to :func:`socket`. If the :const:`AF_UNIX` constant is not
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000187 defined then this protocol is unsupported. More constants may be available
188 depending on the system.
Georg Brandl116aa622007-08-15 14:28:22 +0000189
190
191.. data:: SOCK_STREAM
192 SOCK_DGRAM
193 SOCK_RAW
194 SOCK_RDM
195 SOCK_SEQPACKET
196
197 These constants represent the socket types, used for the second argument to
Antoine Pitrou7bdfe772010-12-12 20:57:12 +0000198 :func:`socket`. More constants may be available depending on the system.
199 (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be generally
200 useful.)
Georg Brandl116aa622007-08-15 14:28:22 +0000201
Antoine Pitroub1c54962010-10-14 15:05:38 +0000202.. data:: SOCK_CLOEXEC
203 SOCK_NONBLOCK
204
205 These two constants, if defined, can be combined with the socket types and
206 allow you to set some flags atomically (thus avoiding possible race
207 conditions and the need for separate calls).
208
209 .. seealso::
210
211 `Secure File Descriptor Handling <http://udrepper.livejournal.com/20407.html>`_
212 for a more thorough explanation.
213
214 Availability: Linux >= 2.6.27.
215
216 .. versionadded:: 3.2
Georg Brandl116aa622007-08-15 14:28:22 +0000217
218.. data:: SO_*
219 SOMAXCONN
220 MSG_*
221 SOL_*
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000222 SCM_*
Georg Brandl116aa622007-08-15 14:28:22 +0000223 IPPROTO_*
224 IPPORT_*
225 INADDR_*
226 IP_*
227 IPV6_*
228 EAI_*
229 AI_*
230 NI_*
231 TCP_*
232
233 Many constants of these forms, documented in the Unix documentation on sockets
234 and/or the IP protocol, are also defined in the socket module. They are
235 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt`
236 methods of socket objects. In most cases, only those symbols that are defined
237 in the Unix header files are defined; for a few symbols, default values are
238 provided.
239
Charles-François Natali47413c12011-10-06 19:47:44 +0200240.. data:: AF_CAN
241 PF_CAN
242 SOL_CAN_*
243 CAN_*
244
245 Many constants of these forms, documented in the Linux documentation, are
246 also defined in the socket module.
247
248 Availability: Linux >= 2.6.25.
249
250 .. versionadded:: 3.3
251
252
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100253.. data:: AF_RDS
254 PF_RDS
255 SOL_RDS
256 RDS_*
257
258 Many constants of these forms, documented in the Linux documentation, are
259 also defined in the socket module.
260
261 Availability: Linux >= 2.6.30.
262
263 .. versionadded:: 3.3
264
265
Christian Heimesfaf2f632008-01-06 16:59:19 +0000266.. data:: SIO_*
267 RCVALL_*
Georg Brandl48310cd2009-01-03 21:18:54 +0000268
Christian Heimesfaf2f632008-01-06 16:59:19 +0000269 Constants for Windows' WSAIoctl(). The constants are used as arguments to the
270 :meth:`ioctl` method of socket objects.
Georg Brandl48310cd2009-01-03 21:18:54 +0000271
Georg Brandl116aa622007-08-15 14:28:22 +0000272
Christian Heimes043d6f62008-01-07 17:19:16 +0000273.. data:: TIPC_*
274
275 TIPC related constants, matching the ones exported by the C socket API. See
276 the TIPC documentation for more information.
277
278
Georg Brandl116aa622007-08-15 14:28:22 +0000279.. data:: has_ipv6
280
281 This constant contains a boolean value which indicates if IPv6 is supported on
282 this platform.
283
Georg Brandl116aa622007-08-15 14:28:22 +0000284
Gregory P. Smithb4066372010-01-03 03:28:29 +0000285.. function:: create_connection(address[, timeout[, source_address]])
Georg Brandl116aa622007-08-15 14:28:22 +0000286
Georg Brandlf78e02b2008-06-10 17:40:04 +0000287 Convenience function. Connect to *address* (a 2-tuple ``(host, port)``),
288 and return the socket object. Passing the optional *timeout* parameter will
289 set the timeout on the socket instance before attempting to connect. If no
290 *timeout* is supplied, the global default timeout setting returned by
291 :func:`getdefaulttimeout` is used.
Georg Brandl116aa622007-08-15 14:28:22 +0000292
Gregory P. Smithb4066372010-01-03 03:28:29 +0000293 If supplied, *source_address* must be a 2-tuple ``(host, port)`` for the
294 socket to bind to as its source address before connecting. If host or port
295 are '' or 0 respectively the OS default behavior will be used.
296
297 .. versionchanged:: 3.2
298 *source_address* was added.
299
Giampaolo Rodolàb383dbb2010-09-08 22:44:12 +0000300 .. versionchanged:: 3.2
301 support for the :keyword:`with` statement was added.
302
Georg Brandl116aa622007-08-15 14:28:22 +0000303
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000304.. function:: getaddrinfo(host, port, family=0, type=0, proto=0, flags=0)
Georg Brandl116aa622007-08-15 14:28:22 +0000305
Antoine Pitrou91035972010-05-31 17:04:40 +0000306 Translate the *host*/*port* argument into a sequence of 5-tuples that contain
307 all the necessary arguments for creating a socket connected to that service.
308 *host* is a domain name, a string representation of an IPv4/v6 address
309 or ``None``. *port* is a string service name such as ``'http'``, a numeric
310 port number or ``None``. By passing ``None`` as the value of *host*
311 and *port*, you can pass ``NULL`` to the underlying C API.
Georg Brandl116aa622007-08-15 14:28:22 +0000312
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000313 The *family*, *type* and *proto* arguments can be optionally specified
Antoine Pitrou91035972010-05-31 17:04:40 +0000314 in order to narrow the list of addresses returned. Passing zero as a
315 value for each of these arguments selects the full range of results.
316 The *flags* argument can be one or several of the ``AI_*`` constants,
317 and will influence how results are computed and returned.
318 For example, :const:`AI_NUMERICHOST` will disable domain name resolution
319 and will raise an error if *host* is a domain name.
320
321 The function returns a list of 5-tuples with the following structure:
Georg Brandl116aa622007-08-15 14:28:22 +0000322
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000323 ``(family, type, proto, canonname, sockaddr)``
Georg Brandl116aa622007-08-15 14:28:22 +0000324
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000325 In these tuples, *family*, *type*, *proto* are all integers and are
Antoine Pitrou91035972010-05-31 17:04:40 +0000326 meant to be passed to the :func:`socket` function. *canonname* will be
327 a string representing the canonical name of the *host* if
328 :const:`AI_CANONNAME` is part of the *flags* argument; else *canonname*
329 will be empty. *sockaddr* is a tuple describing a socket address, whose
330 format depends on the returned *family* (a ``(address, port)`` 2-tuple for
331 :const:`AF_INET`, a ``(address, port, flow info, scope id)`` 4-tuple for
332 :const:`AF_INET6`), and is meant to be passed to the :meth:`socket.connect`
333 method.
Georg Brandl116aa622007-08-15 14:28:22 +0000334
Antoine Pitrou91035972010-05-31 17:04:40 +0000335 The following example fetches address information for a hypothetical TCP
336 connection to ``www.python.org`` on port 80 (results may differ on your
337 system if IPv6 isn't enabled)::
338
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000339 >>> socket.getaddrinfo("www.python.org", 80, proto=socket.SOL_TCP)
Antoine Pitrou91035972010-05-31 17:04:40 +0000340 [(2, 1, 6, '', ('82.94.164.162', 80)),
341 (10, 1, 6, '', ('2001:888:2000:d::a2', 80, 0, 0))]
Georg Brandl116aa622007-08-15 14:28:22 +0000342
Giampaolo Rodolàccfb91c2010-08-17 15:30:23 +0000343 .. versionchanged:: 3.2
344 parameters can now be passed as single keyword arguments.
345
Georg Brandl116aa622007-08-15 14:28:22 +0000346.. function:: getfqdn([name])
347
348 Return a fully qualified domain name for *name*. If *name* is omitted or empty,
349 it is interpreted as the local host. To find the fully qualified name, the
Benjamin Petersone9bbc8b2008-09-28 02:06:32 +0000350 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the
Georg Brandl116aa622007-08-15 14:28:22 +0000351 host, if available. The first name which includes a period is selected. In
352 case no fully qualified domain name is available, the hostname as returned by
353 :func:`gethostname` is returned.
354
Georg Brandl116aa622007-08-15 14:28:22 +0000355
356.. function:: gethostbyname(hostname)
357
358 Translate a host name to IPv4 address format. The IPv4 address is returned as a
359 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself
360 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete
361 interface. :func:`gethostbyname` does not support IPv6 name resolution, and
362 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support.
363
364
365.. function:: gethostbyname_ex(hostname)
366
367 Translate a host name to IPv4 address format, extended interface. Return a
368 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary
369 host name responding to the given *ip_address*, *aliaslist* is a (possibly
370 empty) list of alternative host names for the same address, and *ipaddrlist* is
371 a list of IPv4 addresses for the same interface on the same host (often but not
372 always a single address). :func:`gethostbyname_ex` does not support IPv6 name
373 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual
374 stack support.
375
376
377.. function:: gethostname()
378
379 Return a string containing the hostname of the machine where the Python
Benjamin Peterson65676e42008-11-05 21:42:45 +0000380 interpreter is currently executing.
381
382 If you want to know the current machine's IP address, you may want to use
383 ``gethostbyname(gethostname())``. This operation assumes that there is a
384 valid address-to-host mapping for the host, and the assumption does not
385 always hold.
386
387 Note: :func:`gethostname` doesn't always return the fully qualified domain
388 name; use ``getfqdn()`` (see above).
Georg Brandl116aa622007-08-15 14:28:22 +0000389
390
391.. function:: gethostbyaddr(ip_address)
392
393 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the
394 primary host name responding to the given *ip_address*, *aliaslist* is a
395 (possibly empty) list of alternative host names for the same address, and
396 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same
397 host (most likely containing only a single address). To find the fully qualified
398 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports
399 both IPv4 and IPv6.
400
401
402.. function:: getnameinfo(sockaddr, flags)
403
404 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending
405 on the settings of *flags*, the result can contain a fully-qualified domain name
406 or numeric address representation in *host*. Similarly, *port* can contain a
407 string port name or a numeric port number.
408
Georg Brandl116aa622007-08-15 14:28:22 +0000409
410.. function:: getprotobyname(protocolname)
411
412 Translate an Internet protocol name (for example, ``'icmp'``) to a constant
413 suitable for passing as the (optional) third argument to the :func:`socket`
414 function. This is usually only needed for sockets opened in "raw" mode
415 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen
416 automatically if the protocol is omitted or zero.
417
418
419.. function:: getservbyname(servicename[, protocolname])
420
421 Translate an Internet service name and protocol name to a port number for that
422 service. The optional protocol name, if given, should be ``'tcp'`` or
423 ``'udp'``, otherwise any protocol will match.
424
425
426.. function:: getservbyport(port[, protocolname])
427
428 Translate an Internet port number and protocol name to a service name for that
429 service. The optional protocol name, if given, should be ``'tcp'`` or
430 ``'udp'``, otherwise any protocol will match.
431
432
433.. function:: socket([family[, type[, proto]]])
434
435 Create a new socket using the given address family, socket type and protocol
436 number. The address family should be :const:`AF_INET` (the default),
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100437 :const:`AF_INET6`, :const:`AF_UNIX`, :const:`AF_CAN` or :const:`AF_RDS`. The
438 socket type should be :const:`SOCK_STREAM` (the default),
439 :const:`SOCK_DGRAM`, :const:`SOCK_RAW` or perhaps one of the other ``SOCK_``
440 constants. The protocol number is usually zero and may be omitted in that
441 case or :const:`CAN_RAW` in case the address family is :const:`AF_CAN`.
Charles-François Natali47413c12011-10-06 19:47:44 +0200442
443 .. versionchanged:: 3.3
444 The AF_CAN family was added.
Charles-François Natali10b8cf42011-11-10 19:21:37 +0100445 The AF_RDS family was added.
Georg Brandl116aa622007-08-15 14:28:22 +0000446
447
Georg Brandl116aa622007-08-15 14:28:22 +0000448.. function:: socketpair([family[, type[, proto]]])
449
450 Build a pair of connected socket objects using the given address family, socket
451 type, and protocol number. Address family, socket type, and protocol number are
452 as for the :func:`socket` function above. The default family is :const:`AF_UNIX`
453 if defined on the platform; otherwise, the default is :const:`AF_INET`.
454 Availability: Unix.
455
Antoine Pitrou9e0b8642010-09-14 18:00:02 +0000456 .. versionchanged:: 3.2
457 The returned socket objects now support the whole socket API, rather
458 than a subset.
459
Georg Brandl116aa622007-08-15 14:28:22 +0000460
461.. function:: fromfd(fd, family, type[, proto])
462
463 Duplicate the file descriptor *fd* (an integer as returned by a file object's
464 :meth:`fileno` method) and build a socket object from the result. Address
465 family, socket type and protocol number are as for the :func:`socket` function
466 above. The file descriptor should refer to a socket, but this is not checked ---
467 subsequent operations on the object may fail if the file descriptor is invalid.
468 This function is rarely needed, but can be used to get or set socket options on
469 a socket passed to a program as standard input or output (such as a server
470 started by the Unix inet daemon). The socket is assumed to be in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +0000471
472
473.. function:: ntohl(x)
474
475 Convert 32-bit positive integers from network to host byte order. On machines
476 where the host byte order is the same as network byte order, this is a no-op;
477 otherwise, it performs a 4-byte swap operation.
478
479
480.. function:: ntohs(x)
481
482 Convert 16-bit positive integers from network to host byte order. On machines
483 where the host byte order is the same as network byte order, this is a no-op;
484 otherwise, it performs a 2-byte swap operation.
485
486
487.. function:: htonl(x)
488
489 Convert 32-bit positive integers from host to network byte order. On machines
490 where the host byte order is the same as network byte order, this is a no-op;
491 otherwise, it performs a 4-byte swap operation.
492
493
494.. function:: htons(x)
495
496 Convert 16-bit positive integers from host to network byte order. On machines
497 where the host byte order is the same as network byte order, this is a no-op;
498 otherwise, it performs a 2-byte swap operation.
499
500
501.. function:: inet_aton(ip_string)
502
503 Convert an IPv4 address from dotted-quad string format (for example,
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000504 '123.45.67.89') to 32-bit packed binary format, as a bytes object four characters in
Georg Brandl116aa622007-08-15 14:28:22 +0000505 length. This is useful when conversing with a program that uses the standard C
Georg Brandl60203b42010-10-06 10:11:56 +0000506 library and needs objects of type :c:type:`struct in_addr`, which is the C type
Georg Brandl116aa622007-08-15 14:28:22 +0000507 for the 32-bit packed binary this function returns.
508
Georg Brandlf5123ef2009-06-04 10:28:36 +0000509 :func:`inet_aton` also accepts strings with less than three dots; see the
510 Unix manual page :manpage:`inet(3)` for details.
511
Georg Brandl116aa622007-08-15 14:28:22 +0000512 If the IPv4 address string passed to this function is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200513 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl60203b42010-10-06 10:11:56 +0000514 the underlying C implementation of :c:func:`inet_aton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000515
Georg Brandl5f259722009-05-04 20:50:30 +0000516 :func:`inet_aton` does not support IPv6, and :func:`inet_pton` should be used
Georg Brandl116aa622007-08-15 14:28:22 +0000517 instead for IPv4/v6 dual stack support.
518
519
520.. function:: inet_ntoa(packed_ip)
521
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000522 Convert a 32-bit packed IPv4 address (a bytes object four characters in
523 length) to its standard dotted-quad string representation (for example,
524 '123.45.67.89'). This is useful when conversing with a program that uses the
Georg Brandl60203b42010-10-06 10:11:56 +0000525 standard C library and needs objects of type :c:type:`struct in_addr`, which
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000526 is the C type for the 32-bit packed binary data this function takes as an
527 argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000528
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000529 If the byte sequence passed to this function is not exactly 4 bytes in
Antoine Pitrou5574c302011-10-12 17:53:43 +0200530 length, :exc:`OSError` will be raised. :func:`inet_ntoa` does not
Georg Brandl5f259722009-05-04 20:50:30 +0000531 support IPv6, and :func:`inet_ntop` should be used instead for IPv4/v6 dual
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000532 stack support.
Georg Brandl116aa622007-08-15 14:28:22 +0000533
534
535.. function:: inet_pton(address_family, ip_string)
536
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000537 Convert an IP address from its family-specific string format to a packed,
538 binary format. :func:`inet_pton` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000539 calls for an object of type :c:type:`struct in_addr` (similar to
540 :func:`inet_aton`) or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000541
542 Supported values for *address_family* are currently :const:`AF_INET` and
543 :const:`AF_INET6`. If the IP address string *ip_string* is invalid,
Antoine Pitrou5574c302011-10-12 17:53:43 +0200544 :exc:`OSError` will be raised. Note that exactly what is valid depends on
Georg Brandl116aa622007-08-15 14:28:22 +0000545 both the value of *address_family* and the underlying implementation of
Georg Brandl60203b42010-10-06 10:11:56 +0000546 :c:func:`inet_pton`.
Georg Brandl116aa622007-08-15 14:28:22 +0000547
548 Availability: Unix (maybe not all platforms).
549
Georg Brandl116aa622007-08-15 14:28:22 +0000550
551.. function:: inet_ntop(address_family, packed_ip)
552
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000553 Convert a packed IP address (a bytes object of some number of characters) to its
Georg Brandl116aa622007-08-15 14:28:22 +0000554 standard, family-specific string representation (for example, ``'7.10.0.5'`` or
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000555 ``'5aef:2b::8'``). :func:`inet_ntop` is useful when a library or network protocol
Georg Brandl60203b42010-10-06 10:11:56 +0000556 returns an object of type :c:type:`struct in_addr` (similar to :func:`inet_ntoa`)
557 or :c:type:`struct in6_addr`.
Georg Brandl116aa622007-08-15 14:28:22 +0000558
559 Supported values for *address_family* are currently :const:`AF_INET` and
560 :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the
561 specified address family, :exc:`ValueError` will be raised. A
Antoine Pitrou5574c302011-10-12 17:53:43 +0200562 :exc:`OSError` is raised for errors from the call to :func:`inet_ntop`.
Georg Brandl116aa622007-08-15 14:28:22 +0000563
564 Availability: Unix (maybe not all platforms).
565
Georg Brandl116aa622007-08-15 14:28:22 +0000566
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000567..
568 XXX: Are sendmsg(), recvmsg() and CMSG_*() available on any
569 non-Unix platforms? The old (obsolete?) 4.2BSD form of the
570 interface, in which struct msghdr has no msg_control or
571 msg_controllen members, is not currently supported.
572
573.. function:: CMSG_LEN(length)
574
575 Return the total length, without trailing padding, of an ancillary
576 data item with associated data of the given *length*. This value
577 can often be used as the buffer size for :meth:`~socket.recvmsg` to
578 receive a single item of ancillary data, but :rfc:`3542` requires
579 portable applications to use :func:`CMSG_SPACE` and thus include
580 space for padding, even when the item will be the last in the
581 buffer. Raises :exc:`OverflowError` if *length* is outside the
582 permissible range of values.
583
584 Availability: most Unix platforms, possibly others.
585
586 .. versionadded:: 3.3
587
588
589.. function:: CMSG_SPACE(length)
590
591 Return the buffer size needed for :meth:`~socket.recvmsg` to
592 receive an ancillary data item with associated data of the given
593 *length*, along with any trailing padding. The buffer space needed
594 to receive multiple items is the sum of the :func:`CMSG_SPACE`
595 values for their associated data lengths. Raises
596 :exc:`OverflowError` if *length* is outside the permissible range
597 of values.
598
599 Note that some systems might support ancillary data without
600 providing this function. Also note that setting the buffer size
601 using the results of this function may not precisely limit the
602 amount of ancillary data that can be received, since additional
603 data may be able to fit into the padding area.
604
605 Availability: most Unix platforms, possibly others.
606
607 .. versionadded:: 3.3
608
609
Georg Brandl116aa622007-08-15 14:28:22 +0000610.. function:: getdefaulttimeout()
611
Ezio Melotti388c9452011-08-14 08:28:57 +0300612 Return the default timeout in seconds (float) for new socket objects. A value
Georg Brandl116aa622007-08-15 14:28:22 +0000613 of ``None`` indicates that new socket objects have no timeout. When the socket
614 module is first imported, the default is ``None``.
615
Georg Brandl116aa622007-08-15 14:28:22 +0000616
617.. function:: setdefaulttimeout(timeout)
618
Ezio Melotti388c9452011-08-14 08:28:57 +0300619 Set the default timeout in seconds (float) for new socket objects. When
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000620 the socket module is first imported, the default is ``None``. See
621 :meth:`~socket.settimeout` for possible values and their respective
622 meanings.
Georg Brandl116aa622007-08-15 14:28:22 +0000623
Georg Brandl116aa622007-08-15 14:28:22 +0000624
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000625.. function:: sethostname(name)
626
627 Set the machine's hostname to *name*. This will raise a
Antoine Pitrou5574c302011-10-12 17:53:43 +0200628 :exc:`OSError` if you don't have enough rights.
Antoine Pitrou061cfb52011-02-28 22:25:22 +0000629
630 Availability: Unix.
631
632 .. versionadded:: 3.3
633
634
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700635.. function:: if_nameindex()
636
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700637 Return a list of network interface information
638 (index int, name string) tuples.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200639 :exc:`OSError` if the system call fails.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700640
641 Availability: Unix.
642
643 .. versionadded:: 3.3
644
645
646.. function:: if_nametoindex(if_name)
647
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700648 Return a network interface index number corresponding to an
649 interface name.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200650 :exc:`OSError` if no interface with the given name exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700651
652 Availability: Unix.
653
654 .. versionadded:: 3.3
655
656
657.. function:: if_indextoname(if_index)
658
Gregory P. Smithb6471db2011-05-22 22:47:55 -0700659 Return a network interface name corresponding to a
660 interface index number.
Antoine Pitrou5574c302011-10-12 17:53:43 +0200661 :exc:`OSError` if no interface with the given index exists.
Gregory P. Smith5ed2e772011-05-15 00:26:45 -0700662
663 Availability: Unix.
664
665 .. versionadded:: 3.3
666
667
Georg Brandl116aa622007-08-15 14:28:22 +0000668.. data:: SocketType
669
670 This is a Python type object that represents the socket object type. It is the
671 same as ``type(socket(...))``.
672
673
Georg Brandl116aa622007-08-15 14:28:22 +0000674.. _socket-objects:
675
676Socket Objects
677--------------
678
679Socket objects have the following methods. Except for :meth:`makefile` these
680correspond to Unix system calls applicable to sockets.
681
682
683.. method:: socket.accept()
684
685 Accept a connection. The socket must be bound to an address and listening for
686 connections. The return value is a pair ``(conn, address)`` where *conn* is a
687 *new* socket object usable to send and receive data on the connection, and
688 *address* is the address bound to the socket on the other end of the connection.
689
690
691.. method:: socket.bind(address)
692
693 Bind the socket to *address*. The socket must not already be bound. (The format
694 of *address* depends on the address family --- see above.)
695
Georg Brandl116aa622007-08-15 14:28:22 +0000696
697.. method:: socket.close()
698
699 Close the socket. All future operations on the socket object will fail. The
700 remote end will receive no more data (after queued data is flushed). Sockets are
701 automatically closed when they are garbage-collected.
702
Antoine Pitrou4a67a462011-01-02 22:06:53 +0000703 .. note::
704 :meth:`close()` releases the resource associated with a connection but
705 does not necessarily close the connection immediately. If you want
706 to close the connection in a timely fashion, call :meth:`shutdown()`
707 before :meth:`close()`.
708
Georg Brandl116aa622007-08-15 14:28:22 +0000709
710.. method:: socket.connect(address)
711
712 Connect to a remote socket at *address*. (The format of *address* depends on the
713 address family --- see above.)
714
Georg Brandl116aa622007-08-15 14:28:22 +0000715
716.. method:: socket.connect_ex(address)
717
718 Like ``connect(address)``, but return an error indicator instead of raising an
Georg Brandl60203b42010-10-06 10:11:56 +0000719 exception for errors returned by the C-level :c:func:`connect` call (other
Georg Brandl116aa622007-08-15 14:28:22 +0000720 problems, such as "host not found," can still raise exceptions). The error
721 indicator is ``0`` if the operation succeeded, otherwise the value of the
Georg Brandl60203b42010-10-06 10:11:56 +0000722 :c:data:`errno` variable. This is useful to support, for example, asynchronous
Georg Brandl116aa622007-08-15 14:28:22 +0000723 connects.
724
Georg Brandl116aa622007-08-15 14:28:22 +0000725
Antoine Pitrou6e451df2010-08-09 20:39:54 +0000726.. method:: socket.detach()
727
728 Put the socket object into closed state without actually closing the
729 underlying file descriptor. The file descriptor is returned, and can
730 be reused for other purposes.
731
732 .. versionadded:: 3.2
733
734
Georg Brandl116aa622007-08-15 14:28:22 +0000735.. method:: socket.fileno()
736
737 Return the socket's file descriptor (a small integer). This is useful with
738 :func:`select.select`.
739
740 Under Windows the small integer returned by this method cannot be used where a
741 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have
742 this limitation.
743
744
745.. method:: socket.getpeername()
746
747 Return the remote address to which the socket is connected. This is useful to
748 find out the port number of a remote IPv4/v6 socket, for instance. (The format
749 of the address returned depends on the address family --- see above.) On some
750 systems this function is not supported.
751
752
753.. method:: socket.getsockname()
754
755 Return the socket's own address. This is useful to find out the port number of
756 an IPv4/v6 socket, for instance. (The format of the address returned depends on
757 the address family --- see above.)
758
759
760.. method:: socket.getsockopt(level, optname[, buflen])
761
762 Return the value of the given socket option (see the Unix man page
763 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.)
764 are defined in this module. If *buflen* is absent, an integer option is assumed
765 and its integer value is returned by the function. If *buflen* is present, it
766 specifies the maximum length of the buffer used to receive the option in, and
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000767 this buffer is returned as a bytes object. It is up to the caller to decode the
Georg Brandl116aa622007-08-15 14:28:22 +0000768 contents of the buffer (see the optional built-in module :mod:`struct` for a way
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000769 to decode C structures encoded as byte strings).
Georg Brandl116aa622007-08-15 14:28:22 +0000770
Georg Brandl48310cd2009-01-03 21:18:54 +0000771
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000772.. method:: socket.gettimeout()
773
Ezio Melotti388c9452011-08-14 08:28:57 +0300774 Return the timeout in seconds (float) associated with socket operations,
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000775 or ``None`` if no timeout is set. This reflects the last call to
776 :meth:`setblocking` or :meth:`settimeout`.
777
778
Christian Heimesfaf2f632008-01-06 16:59:19 +0000779.. method:: socket.ioctl(control, option)
780
Georg Brandl48310cd2009-01-03 21:18:54 +0000781 :platform: Windows
782
Christian Heimes679db4a2008-01-18 09:56:22 +0000783 The :meth:`ioctl` method is a limited interface to the WSAIoctl system
Georg Brandl8569e582010-05-19 20:57:08 +0000784 interface. Please refer to the `Win32 documentation
785 <http://msdn.microsoft.com/en-us/library/ms741621%28VS.85%29.aspx>`_ for more
786 information.
Georg Brandl48310cd2009-01-03 21:18:54 +0000787
Alexandre Vassalotti6d3dfc32009-07-29 19:54:39 +0000788 On other platforms, the generic :func:`fcntl.fcntl` and :func:`fcntl.ioctl`
789 functions may be used; they accept a socket object as their first argument.
Georg Brandl116aa622007-08-15 14:28:22 +0000790
791.. method:: socket.listen(backlog)
792
793 Listen for connections made to the socket. The *backlog* argument specifies the
Antoine Pitrou1be815a2011-05-10 19:16:29 +0200794 maximum number of queued connections and should be at least 0; the maximum value
795 is system-dependent (usually 5), the minimum value is forced to 0.
Georg Brandl116aa622007-08-15 14:28:22 +0000796
797
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000798.. method:: socket.makefile(mode='r', buffering=None, *, encoding=None, \
799 errors=None, newline=None)
Georg Brandl116aa622007-08-15 14:28:22 +0000800
801 .. index:: single: I/O control; buffering
802
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000803 Return a :term:`file object` associated with the socket. The exact returned
804 type depends on the arguments given to :meth:`makefile`. These arguments are
805 interpreted the same way as by the built-in :func:`open` function.
Georg Brandl116aa622007-08-15 14:28:22 +0000806
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000807 Closing the file object won't close the socket unless there are no remaining
Antoine Pitroudfad7e32011-01-05 21:17:36 +0000808 references to the socket. The socket must be in blocking mode; it can have
809 a timeout, but the file object's internal buffer may end up in a inconsistent
810 state if a timeout occurs.
Georg Brandle9e8c9b2010-12-28 11:49:41 +0000811
812 .. note::
813
814 On Windows, the file-like object created by :meth:`makefile` cannot be
815 used where a file object with a file descriptor is expected, such as the
816 stream arguments of :meth:`subprocess.Popen`.
Antoine Pitrou4adb2882010-01-04 18:50:53 +0000817
Georg Brandl116aa622007-08-15 14:28:22 +0000818
819.. method:: socket.recv(bufsize[, flags])
820
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000821 Receive data from the socket. The return value is a bytes object representing the
Georg Brandl116aa622007-08-15 14:28:22 +0000822 data received. The maximum amount of data to be received at once is specified
823 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of
824 the optional argument *flags*; it defaults to zero.
825
826 .. note::
827
828 For best match with hardware and network realities, the value of *bufsize*
829 should be a relatively small power of 2, for example, 4096.
830
831
832.. method:: socket.recvfrom(bufsize[, flags])
833
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000834 Receive data from the socket. The return value is a pair ``(bytes, address)``
835 where *bytes* is a bytes object representing the data received and *address* is the
Georg Brandl116aa622007-08-15 14:28:22 +0000836 address of the socket sending the data. See the Unix manual page
837 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults
838 to zero. (The format of *address* depends on the address family --- see above.)
839
840
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000841.. method:: socket.recvmsg(bufsize[, ancbufsize[, flags]])
842
843 Receive normal data (up to *bufsize* bytes) and ancillary data from
844 the socket. The *ancbufsize* argument sets the size in bytes of
845 the internal buffer used to receive the ancillary data; it defaults
846 to 0, meaning that no ancillary data will be received. Appropriate
847 buffer sizes for ancillary data can be calculated using
848 :func:`CMSG_SPACE` or :func:`CMSG_LEN`, and items which do not fit
849 into the buffer might be truncated or discarded. The *flags*
850 argument defaults to 0 and has the same meaning as for
851 :meth:`recv`.
852
853 The return value is a 4-tuple: ``(data, ancdata, msg_flags,
854 address)``. The *data* item is a :class:`bytes` object holding the
855 non-ancillary data received. The *ancdata* item is a list of zero
856 or more tuples ``(cmsg_level, cmsg_type, cmsg_data)`` representing
857 the ancillary data (control messages) received: *cmsg_level* and
858 *cmsg_type* are integers specifying the protocol level and
859 protocol-specific type respectively, and *cmsg_data* is a
860 :class:`bytes` object holding the associated data. The *msg_flags*
861 item is the bitwise OR of various flags indicating conditions on
862 the received message; see your system documentation for details.
863 If the receiving socket is unconnected, *address* is the address of
864 the sending socket, if available; otherwise, its value is
865 unspecified.
866
867 On some systems, :meth:`sendmsg` and :meth:`recvmsg` can be used to
868 pass file descriptors between processes over an :const:`AF_UNIX`
869 socket. When this facility is used (it is often restricted to
870 :const:`SOCK_STREAM` sockets), :meth:`recvmsg` will return, in its
871 ancillary data, items of the form ``(socket.SOL_SOCKET,
872 socket.SCM_RIGHTS, fds)``, where *fds* is a :class:`bytes` object
873 representing the new file descriptors as a binary array of the
874 native C :c:type:`int` type. If :meth:`recvmsg` raises an
875 exception after the system call returns, it will first attempt to
876 close any file descriptors received via this mechanism.
877
878 Some systems do not indicate the truncated length of ancillary data
879 items which have been only partially received. If an item appears
880 to extend beyond the end of the buffer, :meth:`recvmsg` will issue
881 a :exc:`RuntimeWarning`, and will return the part of it which is
882 inside the buffer provided it has not been truncated before the
883 start of its associated data.
884
885 On systems which support the :const:`SCM_RIGHTS` mechanism, the
886 following function will receive up to *maxfds* file descriptors,
887 returning the message data and a list containing the descriptors
888 (while ignoring unexpected conditions such as unrelated control
889 messages being received). See also :meth:`sendmsg`. ::
890
891 import socket, array
892
893 def recv_fds(sock, msglen, maxfds):
894 fds = array.array("i") # Array of ints
895 msg, ancdata, flags, addr = sock.recvmsg(msglen, socket.CMSG_LEN(maxfds * fds.itemsize))
896 for cmsg_level, cmsg_type, cmsg_data in ancdata:
897 if (cmsg_level == socket.SOL_SOCKET and cmsg_type == socket.SCM_RIGHTS):
898 # Append data, ignoring any truncated integers at the end.
899 fds.fromstring(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
900 return msg, list(fds)
901
902 Availability: most Unix platforms, possibly others.
903
904 .. versionadded:: 3.3
905
906
907.. method:: socket.recvmsg_into(buffers[, ancbufsize[, flags]])
908
909 Receive normal data and ancillary data from the socket, behaving as
910 :meth:`recvmsg` would, but scatter the non-ancillary data into a
911 series of buffers instead of returning a new bytes object. The
912 *buffers* argument must be an iterable of objects that export
913 writable buffers (e.g. :class:`bytearray` objects); these will be
914 filled with successive chunks of the non-ancillary data until it
915 has all been written or there are no more buffers. The operating
916 system may set a limit (:func:`~os.sysconf` value ``SC_IOV_MAX``)
917 on the number of buffers that can be used. The *ancbufsize* and
918 *flags* arguments have the same meaning as for :meth:`recvmsg`.
919
920 The return value is a 4-tuple: ``(nbytes, ancdata, msg_flags,
921 address)``, where *nbytes* is the total number of bytes of
922 non-ancillary data written into the buffers, and *ancdata*,
923 *msg_flags* and *address* are the same as for :meth:`recvmsg`.
924
925 Example::
926
927 >>> import socket
928 >>> s1, s2 = socket.socketpair()
929 >>> b1 = bytearray(b'----')
930 >>> b2 = bytearray(b'0123456789')
931 >>> b3 = bytearray(b'--------------')
932 >>> s1.send(b'Mary had a little lamb')
933 22
934 >>> s2.recvmsg_into([b1, memoryview(b2)[2:9], b3])
935 (22, [], 0, None)
936 >>> [b1, b2, b3]
937 [bytearray(b'Mary'), bytearray(b'01 had a 9'), bytearray(b'little lamb---')]
938
939 Availability: most Unix platforms, possibly others.
940
941 .. versionadded:: 3.3
942
943
Georg Brandl116aa622007-08-15 14:28:22 +0000944.. method:: socket.recvfrom_into(buffer[, nbytes[, flags]])
945
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000946 Receive data from the socket, writing it into *buffer* instead of creating a
947 new bytestring. The return value is a pair ``(nbytes, address)`` where *nbytes* is
Georg Brandl116aa622007-08-15 14:28:22 +0000948 the number of bytes received and *address* is the address of the socket sending
949 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the
950 optional argument *flags*; it defaults to zero. (The format of *address*
951 depends on the address family --- see above.)
952
Georg Brandl116aa622007-08-15 14:28:22 +0000953
954.. method:: socket.recv_into(buffer[, nbytes[, flags]])
955
956 Receive up to *nbytes* bytes from the socket, storing the data into a buffer
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000957 rather than creating a new bytestring. If *nbytes* is not specified (or 0),
Benjamin Peterson08bf91c2010-04-11 16:12:57 +0000958 receive up to the size available in the given buffer. Returns the number of
959 bytes received. See the Unix manual page :manpage:`recv(2)` for the meaning
960 of the optional argument *flags*; it defaults to zero.
Georg Brandl116aa622007-08-15 14:28:22 +0000961
Georg Brandl116aa622007-08-15 14:28:22 +0000962
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000963.. method:: socket.send(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +0000964
965 Send data to the socket. The socket must be connected to a remote socket. The
966 optional *flags* argument has the same meaning as for :meth:`recv` above.
967 Returns the number of bytes sent. Applications are responsible for checking that
968 all data has been sent; if only some of the data was transmitted, the
969 application needs to attempt delivery of the remaining data.
970
971
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000972.. method:: socket.sendall(bytes[, flags])
Georg Brandl116aa622007-08-15 14:28:22 +0000973
974 Send data to the socket. The socket must be connected to a remote socket. The
975 optional *flags* argument has the same meaning as for :meth:`recv` above.
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000976 Unlike :meth:`send`, this method continues to send data from *bytes* until
Georg Brandl116aa622007-08-15 14:28:22 +0000977 either all data has been sent or an error occurs. ``None`` is returned on
978 success. On error, an exception is raised, and there is no way to determine how
979 much data, if any, was successfully sent.
980
981
Georg Brandl42b2f2e2008-08-14 11:50:32 +0000982.. method:: socket.sendto(bytes[, flags], address)
Georg Brandl116aa622007-08-15 14:28:22 +0000983
984 Send data to the socket. The socket should not be connected to a remote socket,
985 since the destination socket is specified by *address*. The optional *flags*
986 argument has the same meaning as for :meth:`recv` above. Return the number of
987 bytes sent. (The format of *address* depends on the address family --- see
988 above.)
989
990
Nick Coghlan96fe56a2011-08-22 11:55:57 +1000991.. method:: socket.sendmsg(buffers[, ancdata[, flags[, address]]])
992
993 Send normal and ancillary data to the socket, gathering the
994 non-ancillary data from a series of buffers and concatenating it
995 into a single message. The *buffers* argument specifies the
996 non-ancillary data as an iterable of buffer-compatible objects
997 (e.g. :class:`bytes` objects); the operating system may set a limit
998 (:func:`~os.sysconf` value ``SC_IOV_MAX``) on the number of buffers
999 that can be used. The *ancdata* argument specifies the ancillary
1000 data (control messages) as an iterable of zero or more tuples
1001 ``(cmsg_level, cmsg_type, cmsg_data)``, where *cmsg_level* and
1002 *cmsg_type* are integers specifying the protocol level and
1003 protocol-specific type respectively, and *cmsg_data* is a
1004 buffer-compatible object holding the associated data. Note that
1005 some systems (in particular, systems without :func:`CMSG_SPACE`)
1006 might support sending only one control message per call. The
1007 *flags* argument defaults to 0 and has the same meaning as for
1008 :meth:`send`. If *address* is supplied and not ``None``, it sets a
1009 destination address for the message. The return value is the
1010 number of bytes of non-ancillary data sent.
1011
1012 The following function sends the list of file descriptors *fds*
1013 over an :const:`AF_UNIX` socket, on systems which support the
1014 :const:`SCM_RIGHTS` mechanism. See also :meth:`recvmsg`. ::
1015
1016 import socket, array
1017
1018 def send_fds(sock, msg, fds):
1019 return sock.sendmsg([msg], [(socket.SOL_SOCKET, socket.SCM_RIGHTS, array.array("i", fds))])
1020
1021 Availability: most Unix platforms, possibly others.
1022
1023 .. versionadded:: 3.3
1024
1025
Georg Brandl116aa622007-08-15 14:28:22 +00001026.. method:: socket.setblocking(flag)
1027
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001028 Set blocking or non-blocking mode of the socket: if *flag* is false, the
1029 socket is set to non-blocking, else to blocking mode.
1030
1031 This method is a shorthand for certain :meth:`~socket.settimeout` calls:
1032
1033 * ``sock.setblocking(True)`` is equivalent to ``sock.settimeout(None)``
1034
1035 * ``sock.setblocking(False)`` is equivalent to ``sock.settimeout(0.0)``
Georg Brandl116aa622007-08-15 14:28:22 +00001036
1037
1038.. method:: socket.settimeout(value)
1039
1040 Set a timeout on blocking socket operations. The *value* argument can be a
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001041 nonnegative floating point number expressing seconds, or ``None``.
1042 If a non-zero value is given, subsequent socket operations will raise a
1043 :exc:`timeout` exception if the timeout period *value* has elapsed before
1044 the operation has completed. If zero is given, the socket is put in
1045 non-blocking mode. If ``None`` is given, the socket is put in blocking mode.
Georg Brandl116aa622007-08-15 14:28:22 +00001046
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001047 For further information, please consult the :ref:`notes on socket timeouts <socket-timeouts>`.
Georg Brandl116aa622007-08-15 14:28:22 +00001048
1049
1050.. method:: socket.setsockopt(level, optname, value)
1051
1052 .. index:: module: struct
1053
1054 Set the value of the given socket option (see the Unix manual page
1055 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the
1056 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001057 bytes object representing a buffer. In the latter case it is up to the caller to
1058 ensure that the bytestring contains the proper bits (see the optional built-in
1059 module :mod:`struct` for a way to encode C structures as bytestrings).
Georg Brandl116aa622007-08-15 14:28:22 +00001060
1061
1062.. method:: socket.shutdown(how)
1063
1064 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`,
1065 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends
1066 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are
Georg Brandl0104bcd2010-07-11 09:23:11 +00001067 disallowed. Depending on the platform, shutting down one half of the connection
1068 can also close the opposite half (e.g. on Mac OS X, ``shutdown(SHUT_WR)`` does
1069 not allow further reads on the other end of the connection).
Georg Brandl116aa622007-08-15 14:28:22 +00001070
Georg Brandl8569e582010-05-19 20:57:08 +00001071Note that there are no methods :meth:`read` or :meth:`write`; use
1072:meth:`~socket.recv` and :meth:`~socket.send` without *flags* argument instead.
Georg Brandl116aa622007-08-15 14:28:22 +00001073
1074Socket objects also have these (read-only) attributes that correspond to the
1075values given to the :class:`socket` constructor.
1076
1077
1078.. attribute:: socket.family
1079
1080 The socket family.
1081
Georg Brandl116aa622007-08-15 14:28:22 +00001082
1083.. attribute:: socket.type
1084
1085 The socket type.
1086
Georg Brandl116aa622007-08-15 14:28:22 +00001087
1088.. attribute:: socket.proto
1089
1090 The socket protocol.
1091
Georg Brandl116aa622007-08-15 14:28:22 +00001092
Antoine Pitroudfad7e32011-01-05 21:17:36 +00001093
1094.. _socket-timeouts:
1095
1096Notes on socket timeouts
1097------------------------
1098
1099A socket object can be in one of three modes: blocking, non-blocking, or
1100timeout. Sockets are by default always created in blocking mode, but this
1101can be changed by calling :func:`setdefaulttimeout`.
1102
1103* In *blocking mode*, operations block until complete or the system returns
1104 an error (such as connection timed out).
1105
1106* In *non-blocking mode*, operations fail (with an error that is unfortunately
1107 system-dependent) if they cannot be completed immediately: functions from the
1108 :mod:`select` can be used to know when and whether a socket is available for
1109 reading or writing.
1110
1111* In *timeout mode*, operations fail if they cannot be completed within the
1112 timeout specified for the socket (they raise a :exc:`timeout` exception)
1113 or if the system returns an error.
1114
1115.. note::
1116 At the operating system level, sockets in *timeout mode* are internally set
1117 in non-blocking mode. Also, the blocking and timeout modes are shared between
1118 file descriptors and socket objects that refer to the same network endpoint.
1119 This implementation detail can have visible consequences if e.g. you decide
1120 to use the :meth:`~socket.fileno()` of a socket.
1121
1122Timeouts and the ``connect`` method
1123^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1124
1125The :meth:`~socket.connect` operation is also subject to the timeout
1126setting, and in general it is recommended to call :meth:`~socket.settimeout`
1127before calling :meth:`~socket.connect` or pass a timeout parameter to
1128:meth:`create_connection`. However, the system network stack may also
1129return a connection timeout error of its own regardless of any Python socket
1130timeout setting.
1131
1132Timeouts and the ``accept`` method
1133^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1134
1135If :func:`getdefaulttimeout` is not :const:`None`, sockets returned by
1136the :meth:`~socket.accept` method inherit that timeout. Otherwise, the
1137behaviour depends on settings of the listening socket:
1138
1139* if the listening socket is in *blocking mode* or in *timeout mode*,
1140 the socket returned by :meth:`~socket.accept` is in *blocking mode*;
1141
1142* if the listening socket is in *non-blocking mode*, whether the socket
1143 returned by :meth:`~socket.accept` is in blocking or non-blocking mode
1144 is operating system-dependent. If you want to ensure cross-platform
1145 behaviour, it is recommended you manually override this setting.
1146
1147
Georg Brandl116aa622007-08-15 14:28:22 +00001148.. _socket-example:
1149
1150Example
1151-------
1152
1153Here are four minimal example programs using the TCP/IP protocol: a server that
1154echoes all data that it receives back (servicing only one client), and a client
1155using it. Note that a server must perform the sequence :func:`socket`,
Georg Brandl8569e582010-05-19 20:57:08 +00001156:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
1157repeating the :meth:`~socket.accept` to service more than one client), while a
1158client only needs the sequence :func:`socket`, :meth:`~socket.connect`. Also
1159note that the server does not :meth:`~socket.send`/:meth:`~socket.recv` on the
1160socket it is listening on but on the new socket returned by
1161:meth:`~socket.accept`.
Georg Brandl116aa622007-08-15 14:28:22 +00001162
1163The first two examples support IPv4 only. ::
1164
1165 # Echo server program
1166 import socket
1167
Christian Heimes81ee3ef2008-05-04 22:42:01 +00001168 HOST = '' # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001169 PORT = 50007 # Arbitrary non-privileged port
1170 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1171 s.bind((HOST, PORT))
1172 s.listen(1)
1173 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001174 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001175 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001176 data = conn.recv(1024)
1177 if not data: break
1178 conn.send(data)
1179 conn.close()
1180
1181::
1182
1183 # Echo client program
1184 import socket
1185
1186 HOST = 'daring.cwi.nl' # The remote host
1187 PORT = 50007 # The same port as used by the server
1188 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1189 s.connect((HOST, PORT))
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001190 s.send(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001191 data = s.recv(1024)
1192 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001193 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001194
1195The next two examples are identical to the above two, but support both IPv4 and
1196IPv6. The server side will listen to the first address family available (it
1197should listen to both instead). On most of IPv6-ready systems, IPv6 will take
1198precedence and the server may not accept IPv4 traffic. The client side will try
1199to connect to the all addresses returned as a result of the name resolution, and
1200sends traffic to the first one connected successfully. ::
1201
1202 # Echo server program
1203 import socket
1204 import sys
1205
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001206 HOST = None # Symbolic name meaning all available interfaces
Georg Brandl116aa622007-08-15 14:28:22 +00001207 PORT = 50007 # Arbitrary non-privileged port
1208 s = None
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001209 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC,
1210 socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
Georg Brandl116aa622007-08-15 14:28:22 +00001211 af, socktype, proto, canonname, sa = res
1212 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001213 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001214 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001215 s = None
1216 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001217 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001218 s.bind(sa)
1219 s.listen(1)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001220 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001221 s.close()
1222 s = None
1223 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001224 break
1225 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001226 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001227 sys.exit(1)
1228 conn, addr = s.accept()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001229 print('Connected by', addr)
Collin Winter46334482007-09-10 00:49:57 +00001230 while True:
Georg Brandl116aa622007-08-15 14:28:22 +00001231 data = conn.recv(1024)
1232 if not data: break
1233 conn.send(data)
1234 conn.close()
1235
1236::
1237
1238 # Echo client program
1239 import socket
1240 import sys
1241
1242 HOST = 'daring.cwi.nl' # The remote host
1243 PORT = 50007 # The same port as used by the server
1244 s = None
1245 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM):
1246 af, socktype, proto, canonname, sa = res
1247 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001248 s = socket.socket(af, socktype, proto)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001249 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001250 s = None
1251 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001252 try:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001253 s.connect(sa)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001254 except OSError as msg:
Georg Brandla1c6a1c2009-01-03 21:26:05 +00001255 s.close()
1256 s = None
1257 continue
Georg Brandl116aa622007-08-15 14:28:22 +00001258 break
1259 if s is None:
Georg Brandl6911e3c2007-09-04 07:15:32 +00001260 print('could not open socket')
Georg Brandl116aa622007-08-15 14:28:22 +00001261 sys.exit(1)
Georg Brandl42b2f2e2008-08-14 11:50:32 +00001262 s.send(b'Hello, world')
Georg Brandl116aa622007-08-15 14:28:22 +00001263 data = s.recv(1024)
1264 s.close()
Georg Brandl6911e3c2007-09-04 07:15:32 +00001265 print('Received', repr(data))
Georg Brandl116aa622007-08-15 14:28:22 +00001266
Georg Brandl48310cd2009-01-03 21:18:54 +00001267
Charles-François Natali47413c12011-10-06 19:47:44 +02001268The next example shows how to write a very simple network sniffer with raw
Alexandre Vassalotti5f8ced22008-05-16 00:03:33 +00001269sockets on Windows. The example requires administrator privileges to modify
Christian Heimesfaf2f632008-01-06 16:59:19 +00001270the interface::
1271
1272 import socket
1273
1274 # the public network interface
1275 HOST = socket.gethostbyname(socket.gethostname())
Georg Brandl48310cd2009-01-03 21:18:54 +00001276
Christian Heimesfaf2f632008-01-06 16:59:19 +00001277 # create a raw socket and bind it to the public interface
1278 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
1279 s.bind((HOST, 0))
Georg Brandl48310cd2009-01-03 21:18:54 +00001280
Christian Heimesfaf2f632008-01-06 16:59:19 +00001281 # Include IP headers
1282 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
Georg Brandl48310cd2009-01-03 21:18:54 +00001283
Christian Heimesfaf2f632008-01-06 16:59:19 +00001284 # receive all packages
1285 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
Georg Brandl48310cd2009-01-03 21:18:54 +00001286
Christian Heimesfaf2f632008-01-06 16:59:19 +00001287 # receive a package
Neal Norwitz752abd02008-05-13 04:55:24 +00001288 print(s.recvfrom(65565))
Georg Brandl48310cd2009-01-03 21:18:54 +00001289
Christian Heimesc3f30c42008-02-22 16:37:40 +00001290 # disabled promiscuous mode
Christian Heimesfaf2f632008-01-06 16:59:19 +00001291 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001292
Charles-François Natali47413c12011-10-06 19:47:44 +02001293The last example shows how to use the socket interface to communicate to a CAN
1294network. This example might require special priviledge::
1295
1296 import socket
1297 import struct
1298
1299
1300 # CAN frame packing/unpacking (see `struct can_frame` in <linux/can.h>)
1301
1302 can_frame_fmt = "=IB3x8s"
Victor Stinnerb09460f2011-10-06 20:27:20 +02001303 can_frame_size = struct.calcsize(can_frame_fmt)
Charles-François Natali47413c12011-10-06 19:47:44 +02001304
1305 def build_can_frame(can_id, data):
1306 can_dlc = len(data)
1307 data = data.ljust(8, b'\x00')
1308 return struct.pack(can_frame_fmt, can_id, can_dlc, data)
1309
1310 def dissect_can_frame(frame):
1311 can_id, can_dlc, data = struct.unpack(can_frame_fmt, frame)
1312 return (can_id, can_dlc, data[:can_dlc])
1313
1314
1315 # create a raw socket and bind it to the `vcan0` interface
1316 s = socket.socket(socket.AF_CAN, socket.SOCK_RAW, socket.CAN_RAW)
1317 s.bind(('vcan0',))
1318
1319 while True:
Victor Stinnerb09460f2011-10-06 20:27:20 +02001320 cf, addr = s.recvfrom(can_frame_size)
Charles-François Natali47413c12011-10-06 19:47:44 +02001321
1322 print('Received: can_id=%x, can_dlc=%x, data=%s' % dissect_can_frame(cf))
1323
1324 try:
1325 s.send(cf)
Antoine Pitrou5574c302011-10-12 17:53:43 +02001326 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001327 print('Error sending CAN frame')
1328
1329 try:
1330 s.send(build_can_frame(0x01, b'\x01\x02\x03'))
Antoine Pitrou5574c302011-10-12 17:53:43 +02001331 except OSError:
Charles-François Natali47413c12011-10-06 19:47:44 +02001332 print('Error sending CAN frame')
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001333
Sandro Tosi172f3742011-09-02 20:06:31 +02001334Running an example several times with too small delay between executions, could
1335lead to this error::
1336
Antoine Pitrou5574c302011-10-12 17:53:43 +02001337 OSError: [Errno 98] Address already in use
Sandro Tosi172f3742011-09-02 20:06:31 +02001338
1339This is because the previous execution has left the socket in a ``TIME_WAIT``
1340state, and can't be immediately reused.
1341
1342There is a :mod:`socket` flag to set, in order to prevent this,
1343:data:`socket.SO_REUSEADDR`::
1344
1345 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
1346 s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
1347 s.bind((HOST, PORT))
1348
1349the :data:`SO_REUSEADDR` flag tells the kernel to reuse a local socket in
1350``TIME_WAIT`` state, without waiting for its natural timeout to expire.
1351
1352
Antoine Pitrou7bdfe772010-12-12 20:57:12 +00001353.. seealso::
1354
1355 For an introduction to socket programming (in C), see the following papers:
1356
1357 - *An Introductory 4.3BSD Interprocess Communication Tutorial*, by Stuart Sechrest
1358
1359 - *An Advanced 4.3BSD Interprocess Communication Tutorial*, by Samuel J. Leffler et
1360 al,
1361
1362 both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections
1363 PS1:7 and PS1:8). The platform-specific reference material for the various
1364 socket-related system calls are also a valuable source of information on the
1365 details of socket semantics. For Unix, refer to the manual pages; for Windows,
1366 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may
1367 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6.
1368