|
1 |
|
2 :mod:`socket` --- Low-level networking interface |
|
3 ================================================ |
|
4 |
|
5 .. module:: socket |
|
6 :synopsis: Low-level networking interface. |
|
7 |
|
8 |
|
9 This module provides access to the BSD *socket* interface. It is available on |
|
10 all modern Unix systems, Windows, Mac OS X, BeOS, OS/2, and probably additional |
|
11 platforms. |
|
12 |
|
13 .. note:: |
|
14 |
|
15 Some behavior may be platform dependent, since calls are made to the operating |
|
16 system socket APIs. |
|
17 |
|
18 For an introduction to socket programming (in C), see the following papers: An |
|
19 Introductory 4.3BSD Interprocess Communication Tutorial, by Stuart Sechrest and |
|
20 An Advanced 4.3BSD Interprocess Communication Tutorial, by Samuel J. Leffler et |
|
21 al, both in the UNIX Programmer's Manual, Supplementary Documents 1 (sections |
|
22 PS1:7 and PS1:8). The platform-specific reference material for the various |
|
23 socket-related system calls are also a valuable source of information on the |
|
24 details of socket semantics. For Unix, refer to the manual pages; for Windows, |
|
25 see the WinSock (or Winsock 2) specification. For IPv6-ready APIs, readers may |
|
26 want to refer to :rfc:`3493` titled Basic Socket Interface Extensions for IPv6. |
|
27 |
|
28 .. index:: object: socket |
|
29 |
|
30 The Python interface is a straightforward transliteration of the Unix system |
|
31 call and library interface for sockets to Python's object-oriented style: the |
|
32 :func:`socket` function returns a :dfn:`socket object` whose methods implement |
|
33 the various socket system calls. Parameter types are somewhat higher-level than |
|
34 in the C interface: as with :meth:`read` and :meth:`write` operations on Python |
|
35 files, buffer allocation on receive operations is automatic, and buffer length |
|
36 is implicit on send operations. |
|
37 |
|
38 Socket addresses are represented as follows: A single string is used for the |
|
39 :const:`AF_UNIX` address family. A pair ``(host, port)`` is used for the |
|
40 :const:`AF_INET` address family, where *host* is a string representing either a |
|
41 hostname in Internet domain notation like ``'daring.cwi.nl'`` or an IPv4 address |
|
42 like ``'100.50.200.5'``, and *port* is an integral port number. For |
|
43 :const:`AF_INET6` address family, a four-tuple ``(host, port, flowinfo, |
|
44 scopeid)`` is used, where *flowinfo* and *scopeid* represents ``sin6_flowinfo`` |
|
45 and ``sin6_scope_id`` member in :const:`struct sockaddr_in6` in C. For |
|
46 :mod:`socket` module methods, *flowinfo* and *scopeid* can be omitted just for |
|
47 backward compatibility. Note, however, omission of *scopeid* can cause problems |
|
48 in manipulating scoped IPv6 addresses. Other address families are currently not |
|
49 supported. The address format required by a particular socket object is |
|
50 automatically selected based on the address family specified when the socket |
|
51 object was created. |
|
52 |
|
53 For IPv4 addresses, two special forms are accepted instead of a host address: |
|
54 the empty string represents :const:`INADDR_ANY`, and the string |
|
55 ``'<broadcast>'`` represents :const:`INADDR_BROADCAST`. The behavior is not |
|
56 available for IPv6 for backward compatibility, therefore, you may want to avoid |
|
57 these if you intend to support IPv6 with your Python programs. |
|
58 |
|
59 If you use a hostname in the *host* portion of IPv4/v6 socket address, the |
|
60 program may show a nondeterministic behavior, as Python uses the first address |
|
61 returned from the DNS resolution. The socket address will be resolved |
|
62 differently into an actual IPv4/v6 address, depending on the results from DNS |
|
63 resolution and/or the host configuration. For deterministic behavior use a |
|
64 numeric address in *host* portion. |
|
65 |
|
66 .. versionadded:: 2.5 |
|
67 AF_NETLINK sockets are represented as pairs ``pid, groups``. |
|
68 |
|
69 .. versionadded:: 2.6 |
|
70 Linux-only support for TIPC is also available using the :const:`AF_TIPC` |
|
71 address family. TIPC is an open, non-IP based networked protocol designed |
|
72 for use in clustered computer environments. Addresses are represented by a |
|
73 tuple, and the fields depend on the address type. The general tuple form is |
|
74 ``(addr_type, v1, v2, v3 [, scope])``, where: |
|
75 |
|
76 - *addr_type* is one of TIPC_ADDR_NAMESEQ, TIPC_ADDR_NAME, or |
|
77 TIPC_ADDR_ID. |
|
78 - *scope* is one of TIPC_ZONE_SCOPE, TIPC_CLUSTER_SCOPE, and |
|
79 TIPC_NODE_SCOPE. |
|
80 - If *addr_type* is TIPC_ADDR_NAME, then *v1* is the server type, *v2* is |
|
81 the port identifier, and *v3* should be 0. |
|
82 |
|
83 If *addr_type* is TIPC_ADDR_NAMESEQ, then *v1* is the server type, *v2* |
|
84 is the lower port number, and *v3* is the upper port number. |
|
85 |
|
86 If *addr_type* is TIPC_ADDR_ID, then *v1* is the node, *v2* is the |
|
87 reference, and *v3* should be set to 0. |
|
88 |
|
89 |
|
90 All errors raise exceptions. The normal exceptions for invalid argument types |
|
91 and out-of-memory conditions can be raised; errors related to socket or address |
|
92 semantics raise the error :exc:`socket.error`. |
|
93 |
|
94 Non-blocking mode is supported through :meth:`setblocking`. A generalization of |
|
95 this based on timeouts is supported through :meth:`settimeout`. |
|
96 |
|
97 The module :mod:`socket` exports the following constants and functions: |
|
98 |
|
99 |
|
100 .. exception:: error |
|
101 |
|
102 .. index:: module: errno |
|
103 |
|
104 This exception is raised for socket-related errors. The accompanying value is |
|
105 either a string telling what went wrong or a pair ``(errno, string)`` |
|
106 representing an error returned by a system call, similar to the value |
|
107 accompanying :exc:`os.error`. See the module :mod:`errno`, which contains names |
|
108 for the error codes defined by the underlying operating system. |
|
109 |
|
110 .. versionchanged:: 2.6 |
|
111 :exc:`socket.error` is now a child class of :exc:`IOError`. |
|
112 |
|
113 |
|
114 .. exception:: herror |
|
115 |
|
116 This exception is raised for address-related errors, i.e. for functions that use |
|
117 *h_errno* in the C API, including :func:`gethostbyname_ex` and |
|
118 :func:`gethostbyaddr`. |
|
119 |
|
120 The accompanying value is a pair ``(h_errno, string)`` representing an error |
|
121 returned by a library call. *string* represents the description of *h_errno*, as |
|
122 returned by the :cfunc:`hstrerror` C function. |
|
123 |
|
124 |
|
125 .. exception:: gaierror |
|
126 |
|
127 This exception is raised for address-related errors, for :func:`getaddrinfo` and |
|
128 :func:`getnameinfo`. The accompanying value is a pair ``(error, string)`` |
|
129 representing an error returned by a library call. *string* represents the |
|
130 description of *error*, as returned by the :cfunc:`gai_strerror` C function. The |
|
131 *error* value will match one of the :const:`EAI_\*` constants defined in this |
|
132 module. |
|
133 |
|
134 |
|
135 .. exception:: timeout |
|
136 |
|
137 This exception is raised when a timeout occurs on a socket which has had |
|
138 timeouts enabled via a prior call to :meth:`settimeout`. The accompanying value |
|
139 is a string whose value is currently always "timed out". |
|
140 |
|
141 .. versionadded:: 2.3 |
|
142 |
|
143 |
|
144 .. data:: AF_UNIX |
|
145 AF_INET |
|
146 AF_INET6 |
|
147 |
|
148 These constants represent the address (and protocol) families, used for the |
|
149 first argument to :func:`socket`. If the :const:`AF_UNIX` constant is not |
|
150 defined then this protocol is unsupported. |
|
151 |
|
152 |
|
153 .. data:: SOCK_STREAM |
|
154 SOCK_DGRAM |
|
155 SOCK_RAW |
|
156 SOCK_RDM |
|
157 SOCK_SEQPACKET |
|
158 |
|
159 These constants represent the socket types, used for the second argument to |
|
160 :func:`socket`. (Only :const:`SOCK_STREAM` and :const:`SOCK_DGRAM` appear to be |
|
161 generally useful.) |
|
162 |
|
163 |
|
164 .. data:: SO_* |
|
165 SOMAXCONN |
|
166 MSG_* |
|
167 SOL_* |
|
168 IPPROTO_* |
|
169 IPPORT_* |
|
170 INADDR_* |
|
171 IP_* |
|
172 IPV6_* |
|
173 EAI_* |
|
174 AI_* |
|
175 NI_* |
|
176 TCP_* |
|
177 |
|
178 Many constants of these forms, documented in the Unix documentation on sockets |
|
179 and/or the IP protocol, are also defined in the socket module. They are |
|
180 generally used in arguments to the :meth:`setsockopt` and :meth:`getsockopt` |
|
181 methods of socket objects. In most cases, only those symbols that are defined |
|
182 in the Unix header files are defined; for a few symbols, default values are |
|
183 provided. |
|
184 |
|
185 .. data:: SIO_* |
|
186 RCVALL_* |
|
187 |
|
188 Constants for Windows' WSAIoctl(). The constants are used as arguments to the |
|
189 :meth:`ioctl` method of socket objects. |
|
190 |
|
191 .. versionadded:: 2.6 |
|
192 |
|
193 .. data:: TIPC_* |
|
194 |
|
195 TIPC related constants, matching the ones exported by the C socket API. See |
|
196 the TIPC documentation for more information. |
|
197 |
|
198 .. versionadded:: 2.6 |
|
199 |
|
200 .. data:: has_ipv6 |
|
201 |
|
202 This constant contains a boolean value which indicates if IPv6 is supported on |
|
203 this platform. |
|
204 |
|
205 .. versionadded:: 2.3 |
|
206 |
|
207 |
|
208 .. function:: create_connection(address[, timeout]) |
|
209 |
|
210 Convenience function. Connect to *address* (a 2-tuple ``(host, port)``), |
|
211 and return the socket object. Passing the optional *timeout* parameter will |
|
212 set the timeout on the socket instance before attempting to connect. If no |
|
213 *timeout* is supplied, the global default timeout setting returned by |
|
214 :func:`getdefaulttimeout` is used. |
|
215 |
|
216 .. versionadded:: 2.6 |
|
217 |
|
218 |
|
219 .. function:: getaddrinfo(host, port[, family[, socktype[, proto[, flags]]]]) |
|
220 |
|
221 Resolves the *host*/*port* argument, into a sequence of 5-tuples that contain |
|
222 all the necessary arguments for creating the corresponding socket. *host* is a domain |
|
223 name, a string representation of an IPv4/v6 address or ``None``. *port* is a string |
|
224 service name such as ``'http'``, a numeric port number or ``None``. |
|
225 The rest of the arguments are optional and must be numeric if specified. |
|
226 By passing ``None`` as the value of *host* and *port*, , you can pass ``NULL`` to the C API. |
|
227 |
|
228 The :func:`getaddrinfo` function returns a list of 5-tuples with the following |
|
229 structure: |
|
230 |
|
231 ``(family, socktype, proto, canonname, sockaddr)`` |
|
232 |
|
233 *family*, *socktype*, *proto* are all integers and are meant to be passed to the |
|
234 :func:`socket` function. *canonname* is a string representing the canonical name |
|
235 of the *host*. It can be a numeric IPv4/v6 address when :const:`AI_CANONNAME` is |
|
236 specified for a numeric *host*. *sockaddr* is a tuple describing a socket |
|
237 address, as described above. See the source for :mod:`socket` and other |
|
238 library modules for a typical usage of the function. |
|
239 |
|
240 .. versionadded:: 2.2 |
|
241 |
|
242 |
|
243 .. function:: getfqdn([name]) |
|
244 |
|
245 Return a fully qualified domain name for *name*. If *name* is omitted or empty, |
|
246 it is interpreted as the local host. To find the fully qualified name, the |
|
247 hostname returned by :func:`gethostbyaddr` is checked, followed by aliases for the |
|
248 host, if available. The first name which includes a period is selected. In |
|
249 case no fully qualified domain name is available, the hostname as returned by |
|
250 :func:`gethostname` is returned. |
|
251 |
|
252 .. versionadded:: 2.0 |
|
253 |
|
254 |
|
255 .. function:: gethostbyname(hostname) |
|
256 |
|
257 Translate a host name to IPv4 address format. The IPv4 address is returned as a |
|
258 string, such as ``'100.50.200.5'``. If the host name is an IPv4 address itself |
|
259 it is returned unchanged. See :func:`gethostbyname_ex` for a more complete |
|
260 interface. :func:`gethostbyname` does not support IPv6 name resolution, and |
|
261 :func:`getaddrinfo` should be used instead for IPv4/v6 dual stack support. |
|
262 |
|
263 |
|
264 .. function:: gethostbyname_ex(hostname) |
|
265 |
|
266 Translate a host name to IPv4 address format, extended interface. Return a |
|
267 triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the primary |
|
268 host name responding to the given *ip_address*, *aliaslist* is a (possibly |
|
269 empty) list of alternative host names for the same address, and *ipaddrlist* is |
|
270 a list of IPv4 addresses for the same interface on the same host (often but not |
|
271 always a single address). :func:`gethostbyname_ex` does not support IPv6 name |
|
272 resolution, and :func:`getaddrinfo` should be used instead for IPv4/v6 dual |
|
273 stack support. |
|
274 |
|
275 |
|
276 .. function:: gethostname() |
|
277 |
|
278 Return a string containing the hostname of the machine where the Python |
|
279 interpreter is currently executing. |
|
280 |
|
281 If you want to know the current machine's IP address, you may want to use |
|
282 ``gethostbyname(gethostname())``. This operation assumes that there is a |
|
283 valid address-to-host mapping for the host, and the assumption does not |
|
284 always hold. |
|
285 |
|
286 Note: :func:`gethostname` doesn't always return the fully qualified domain |
|
287 name; use ``getfqdn()`` (see above). |
|
288 |
|
289 |
|
290 .. function:: gethostbyaddr(ip_address) |
|
291 |
|
292 Return a triple ``(hostname, aliaslist, ipaddrlist)`` where *hostname* is the |
|
293 primary host name responding to the given *ip_address*, *aliaslist* is a |
|
294 (possibly empty) list of alternative host names for the same address, and |
|
295 *ipaddrlist* is a list of IPv4/v6 addresses for the same interface on the same |
|
296 host (most likely containing only a single address). To find the fully qualified |
|
297 domain name, use the function :func:`getfqdn`. :func:`gethostbyaddr` supports |
|
298 both IPv4 and IPv6. |
|
299 |
|
300 |
|
301 .. function:: getnameinfo(sockaddr, flags) |
|
302 |
|
303 Translate a socket address *sockaddr* into a 2-tuple ``(host, port)``. Depending |
|
304 on the settings of *flags*, the result can contain a fully-qualified domain name |
|
305 or numeric address representation in *host*. Similarly, *port* can contain a |
|
306 string port name or a numeric port number. |
|
307 |
|
308 .. versionadded:: 2.2 |
|
309 |
|
310 |
|
311 .. function:: getprotobyname(protocolname) |
|
312 |
|
313 Translate an Internet protocol name (for example, ``'icmp'``) to a constant |
|
314 suitable for passing as the (optional) third argument to the :func:`socket` |
|
315 function. This is usually only needed for sockets opened in "raw" mode |
|
316 (:const:`SOCK_RAW`); for the normal socket modes, the correct protocol is chosen |
|
317 automatically if the protocol is omitted or zero. |
|
318 |
|
319 |
|
320 .. function:: getservbyname(servicename[, protocolname]) |
|
321 |
|
322 Translate an Internet service name and protocol name to a port number for that |
|
323 service. The optional protocol name, if given, should be ``'tcp'`` or |
|
324 ``'udp'``, otherwise any protocol will match. |
|
325 |
|
326 |
|
327 .. function:: getservbyport(port[, protocolname]) |
|
328 |
|
329 Translate an Internet port number and protocol name to a service name for that |
|
330 service. The optional protocol name, if given, should be ``'tcp'`` or |
|
331 ``'udp'``, otherwise any protocol will match. |
|
332 |
|
333 |
|
334 .. function:: socket([family[, type[, proto]]]) |
|
335 |
|
336 Create a new socket using the given address family, socket type and protocol |
|
337 number. The address family should be :const:`AF_INET` (the default), |
|
338 :const:`AF_INET6` or :const:`AF_UNIX`. The socket type should be |
|
339 :const:`SOCK_STREAM` (the default), :const:`SOCK_DGRAM` or perhaps one of the |
|
340 other ``SOCK_`` constants. The protocol number is usually zero and may be |
|
341 omitted in that case. |
|
342 |
|
343 |
|
344 .. function:: socketpair([family[, type[, proto]]]) |
|
345 |
|
346 Build a pair of connected socket objects using the given address family, socket |
|
347 type, and protocol number. Address family, socket type, and protocol number are |
|
348 as for the :func:`socket` function above. The default family is :const:`AF_UNIX` |
|
349 if defined on the platform; otherwise, the default is :const:`AF_INET`. |
|
350 Availability: Unix. |
|
351 |
|
352 .. versionadded:: 2.4 |
|
353 |
|
354 |
|
355 .. function:: fromfd(fd, family, type[, proto]) |
|
356 |
|
357 Duplicate the file descriptor *fd* (an integer as returned by a file object's |
|
358 :meth:`fileno` method) and build a socket object from the result. Address |
|
359 family, socket type and protocol number are as for the :func:`socket` function |
|
360 above. The file descriptor should refer to a socket, but this is not checked --- |
|
361 subsequent operations on the object may fail if the file descriptor is invalid. |
|
362 This function is rarely needed, but can be used to get or set socket options on |
|
363 a socket passed to a program as standard input or output (such as a server |
|
364 started by the Unix inet daemon). The socket is assumed to be in blocking mode. |
|
365 Availability: Unix. |
|
366 |
|
367 |
|
368 .. function:: ntohl(x) |
|
369 |
|
370 Convert 32-bit positive integers from network to host byte order. On machines |
|
371 where the host byte order is the same as network byte order, this is a no-op; |
|
372 otherwise, it performs a 4-byte swap operation. |
|
373 |
|
374 |
|
375 .. function:: ntohs(x) |
|
376 |
|
377 Convert 16-bit positive integers from network to host byte order. On machines |
|
378 where the host byte order is the same as network byte order, this is a no-op; |
|
379 otherwise, it performs a 2-byte swap operation. |
|
380 |
|
381 |
|
382 .. function:: htonl(x) |
|
383 |
|
384 Convert 32-bit positive integers from host to network byte order. On machines |
|
385 where the host byte order is the same as network byte order, this is a no-op; |
|
386 otherwise, it performs a 4-byte swap operation. |
|
387 |
|
388 |
|
389 .. function:: htons(x) |
|
390 |
|
391 Convert 16-bit positive integers from host to network byte order. On machines |
|
392 where the host byte order is the same as network byte order, this is a no-op; |
|
393 otherwise, it performs a 2-byte swap operation. |
|
394 |
|
395 |
|
396 .. function:: inet_aton(ip_string) |
|
397 |
|
398 Convert an IPv4 address from dotted-quad string format (for example, |
|
399 '123.45.67.89') to 32-bit packed binary format, as a string four characters in |
|
400 length. This is useful when conversing with a program that uses the standard C |
|
401 library and needs objects of type :ctype:`struct in_addr`, which is the C type |
|
402 for the 32-bit packed binary this function returns. |
|
403 |
|
404 If the IPv4 address string passed to this function is invalid, |
|
405 :exc:`socket.error` will be raised. Note that exactly what is valid depends on |
|
406 the underlying C implementation of :cfunc:`inet_aton`. |
|
407 |
|
408 :func:`inet_aton` does not support IPv6, and :func:`getnameinfo` should be used |
|
409 instead for IPv4/v6 dual stack support. |
|
410 |
|
411 |
|
412 .. function:: inet_ntoa(packed_ip) |
|
413 |
|
414 Convert a 32-bit packed IPv4 address (a string four characters in length) to its |
|
415 standard dotted-quad string representation (for example, '123.45.67.89'). This |
|
416 is useful when conversing with a program that uses the standard C library and |
|
417 needs objects of type :ctype:`struct in_addr`, which is the C type for the |
|
418 32-bit packed binary data this function takes as an argument. |
|
419 |
|
420 If the string passed to this function is not exactly 4 bytes in length, |
|
421 :exc:`socket.error` will be raised. :func:`inet_ntoa` does not support IPv6, and |
|
422 :func:`getnameinfo` should be used instead for IPv4/v6 dual stack support. |
|
423 |
|
424 |
|
425 .. function:: inet_pton(address_family, ip_string) |
|
426 |
|
427 Convert an IP address from its family-specific string format to a packed, binary |
|
428 format. :func:`inet_pton` is useful when a library or network protocol calls for |
|
429 an object of type :ctype:`struct in_addr` (similar to :func:`inet_aton`) or |
|
430 :ctype:`struct in6_addr`. |
|
431 |
|
432 Supported values for *address_family* are currently :const:`AF_INET` and |
|
433 :const:`AF_INET6`. If the IP address string *ip_string* is invalid, |
|
434 :exc:`socket.error` will be raised. Note that exactly what is valid depends on |
|
435 both the value of *address_family* and the underlying implementation of |
|
436 :cfunc:`inet_pton`. |
|
437 |
|
438 Availability: Unix (maybe not all platforms). |
|
439 |
|
440 .. versionadded:: 2.3 |
|
441 |
|
442 |
|
443 .. function:: inet_ntop(address_family, packed_ip) |
|
444 |
|
445 Convert a packed IP address (a string of some number of characters) to its |
|
446 standard, family-specific string representation (for example, ``'7.10.0.5'`` or |
|
447 ``'5aef:2b::8'``) :func:`inet_ntop` is useful when a library or network protocol |
|
448 returns an object of type :ctype:`struct in_addr` (similar to :func:`inet_ntoa`) |
|
449 or :ctype:`struct in6_addr`. |
|
450 |
|
451 Supported values for *address_family* are currently :const:`AF_INET` and |
|
452 :const:`AF_INET6`. If the string *packed_ip* is not the correct length for the |
|
453 specified address family, :exc:`ValueError` will be raised. A |
|
454 :exc:`socket.error` is raised for errors from the call to :func:`inet_ntop`. |
|
455 |
|
456 Availability: Unix (maybe not all platforms). |
|
457 |
|
458 .. versionadded:: 2.3 |
|
459 |
|
460 |
|
461 .. function:: getdefaulttimeout() |
|
462 |
|
463 Return the default timeout in floating seconds for new socket objects. A value |
|
464 of ``None`` indicates that new socket objects have no timeout. When the socket |
|
465 module is first imported, the default is ``None``. |
|
466 |
|
467 .. versionadded:: 2.3 |
|
468 |
|
469 |
|
470 .. function:: setdefaulttimeout(timeout) |
|
471 |
|
472 Set the default timeout in floating seconds for new socket objects. A value of |
|
473 ``None`` indicates that new socket objects have no timeout. When the socket |
|
474 module is first imported, the default is ``None``. |
|
475 |
|
476 .. versionadded:: 2.3 |
|
477 |
|
478 |
|
479 .. data:: SocketType |
|
480 |
|
481 This is a Python type object that represents the socket object type. It is the |
|
482 same as ``type(socket(...))``. |
|
483 |
|
484 |
|
485 .. seealso:: |
|
486 |
|
487 Module :mod:`SocketServer` |
|
488 Classes that simplify writing network servers. |
|
489 |
|
490 |
|
491 .. _socket-objects: |
|
492 |
|
493 Socket Objects |
|
494 -------------- |
|
495 |
|
496 Socket objects have the following methods. Except for :meth:`makefile` these |
|
497 correspond to Unix system calls applicable to sockets. |
|
498 |
|
499 |
|
500 .. method:: socket.accept() |
|
501 |
|
502 Accept a connection. The socket must be bound to an address and listening for |
|
503 connections. The return value is a pair ``(conn, address)`` where *conn* is a |
|
504 *new* socket object usable to send and receive data on the connection, and |
|
505 *address* is the address bound to the socket on the other end of the connection. |
|
506 |
|
507 |
|
508 .. method:: socket.bind(address) |
|
509 |
|
510 Bind the socket to *address*. The socket must not already be bound. (The format |
|
511 of *address* depends on the address family --- see above.) |
|
512 |
|
513 .. note:: |
|
514 |
|
515 This method has historically accepted a pair of parameters for :const:`AF_INET` |
|
516 addresses instead of only a tuple. This was never intentional and is no longer |
|
517 available in Python 2.0 and later. |
|
518 |
|
519 |
|
520 .. method:: socket.close() |
|
521 |
|
522 Close the socket. All future operations on the socket object will fail. The |
|
523 remote end will receive no more data (after queued data is flushed). Sockets are |
|
524 automatically closed when they are garbage-collected. |
|
525 |
|
526 |
|
527 .. method:: socket.connect(address) |
|
528 |
|
529 Connect to a remote socket at *address*. (The format of *address* depends on the |
|
530 address family --- see above.) |
|
531 |
|
532 .. note:: |
|
533 |
|
534 This method has historically accepted a pair of parameters for :const:`AF_INET` |
|
535 addresses instead of only a tuple. This was never intentional and is no longer |
|
536 available in Python 2.0 and later. |
|
537 |
|
538 |
|
539 .. method:: socket.connect_ex(address) |
|
540 |
|
541 Like ``connect(address)``, but return an error indicator instead of raising an |
|
542 exception for errors returned by the C-level :cfunc:`connect` call (other |
|
543 problems, such as "host not found," can still raise exceptions). The error |
|
544 indicator is ``0`` if the operation succeeded, otherwise the value of the |
|
545 :cdata:`errno` variable. This is useful to support, for example, asynchronous |
|
546 connects. |
|
547 |
|
548 .. note:: |
|
549 |
|
550 This method has historically accepted a pair of parameters for :const:`AF_INET` |
|
551 addresses instead of only a tuple. This was never intentional and is no longer |
|
552 available in Python 2.0 and later. |
|
553 |
|
554 |
|
555 .. method:: socket.fileno() |
|
556 |
|
557 Return the socket's file descriptor (a small integer). This is useful with |
|
558 :func:`select.select`. |
|
559 |
|
560 Under Windows the small integer returned by this method cannot be used where a |
|
561 file descriptor can be used (such as :func:`os.fdopen`). Unix does not have |
|
562 this limitation. |
|
563 |
|
564 |
|
565 .. method:: socket.getpeername() |
|
566 |
|
567 Return the remote address to which the socket is connected. This is useful to |
|
568 find out the port number of a remote IPv4/v6 socket, for instance. (The format |
|
569 of the address returned depends on the address family --- see above.) On some |
|
570 systems this function is not supported. |
|
571 |
|
572 |
|
573 .. method:: socket.getsockname() |
|
574 |
|
575 Return the socket's own address. This is useful to find out the port number of |
|
576 an IPv4/v6 socket, for instance. (The format of the address returned depends on |
|
577 the address family --- see above.) |
|
578 |
|
579 |
|
580 .. method:: socket.getsockopt(level, optname[, buflen]) |
|
581 |
|
582 Return the value of the given socket option (see the Unix man page |
|
583 :manpage:`getsockopt(2)`). The needed symbolic constants (:const:`SO_\*` etc.) |
|
584 are defined in this module. If *buflen* is absent, an integer option is assumed |
|
585 and its integer value is returned by the function. If *buflen* is present, it |
|
586 specifies the maximum length of the buffer used to receive the option in, and |
|
587 this buffer is returned as a string. It is up to the caller to decode the |
|
588 contents of the buffer (see the optional built-in module :mod:`struct` for a way |
|
589 to decode C structures encoded as strings). |
|
590 |
|
591 |
|
592 .. method:: socket.ioctl(control, option) |
|
593 |
|
594 :platform: Windows |
|
595 |
|
596 The :meth:`ioctl` method is a limited interface to the WSAIoctl system |
|
597 interface. Please refer to the MSDN documentation for more information. |
|
598 |
|
599 .. versionadded:: 2.6 |
|
600 |
|
601 |
|
602 .. method:: socket.listen(backlog) |
|
603 |
|
604 Listen for connections made to the socket. The *backlog* argument specifies the |
|
605 maximum number of queued connections and should be at least 1; the maximum value |
|
606 is system-dependent (usually 5). |
|
607 |
|
608 |
|
609 .. method:: socket.makefile([mode[, bufsize]]) |
|
610 |
|
611 .. index:: single: I/O control; buffering |
|
612 |
|
613 Return a :dfn:`file object` associated with the socket. (File objects are |
|
614 described in :ref:`bltin-file-objects`.) The file object |
|
615 references a :cfunc:`dup`\ ped version of the socket file descriptor, so the |
|
616 file object and socket object may be closed or garbage-collected independently. |
|
617 The socket must be in blocking mode (it can not have a timeout). The optional |
|
618 *mode* and *bufsize* arguments are interpreted the same way as by the built-in |
|
619 :func:`file` function. |
|
620 |
|
621 |
|
622 .. method:: socket.recv(bufsize[, flags]) |
|
623 |
|
624 Receive data from the socket. The return value is a string representing the |
|
625 data received. The maximum amount of data to be received at once is specified |
|
626 by *bufsize*. See the Unix manual page :manpage:`recv(2)` for the meaning of |
|
627 the optional argument *flags*; it defaults to zero. |
|
628 |
|
629 .. note:: |
|
630 |
|
631 For best match with hardware and network realities, the value of *bufsize* |
|
632 should be a relatively small power of 2, for example, 4096. |
|
633 |
|
634 |
|
635 .. method:: socket.recvfrom(bufsize[, flags]) |
|
636 |
|
637 Receive data from the socket. The return value is a pair ``(string, address)`` |
|
638 where *string* is a string representing the data received and *address* is the |
|
639 address of the socket sending the data. See the Unix manual page |
|
640 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults |
|
641 to zero. (The format of *address* depends on the address family --- see above.) |
|
642 |
|
643 |
|
644 .. method:: socket.recvfrom_into(buffer[, nbytes[, flags]]) |
|
645 |
|
646 Receive data from the socket, writing it into *buffer* instead of creating a |
|
647 new string. The return value is a pair ``(nbytes, address)`` where *nbytes* is |
|
648 the number of bytes received and *address* is the address of the socket sending |
|
649 the data. See the Unix manual page :manpage:`recv(2)` for the meaning of the |
|
650 optional argument *flags*; it defaults to zero. (The format of *address* |
|
651 depends on the address family --- see above.) |
|
652 |
|
653 .. versionadded:: 2.5 |
|
654 |
|
655 |
|
656 .. method:: socket.recv_into(buffer[, nbytes[, flags]]) |
|
657 |
|
658 Receive up to *nbytes* bytes from the socket, storing the data into a buffer |
|
659 rather than creating a new string. If *nbytes* is not specified (or 0), |
|
660 receive up to the size available in the given buffer. See the Unix manual page |
|
661 :manpage:`recv(2)` for the meaning of the optional argument *flags*; it defaults |
|
662 to zero. |
|
663 |
|
664 .. versionadded:: 2.5 |
|
665 |
|
666 |
|
667 .. method:: socket.send(string[, flags]) |
|
668 |
|
669 Send data to the socket. The socket must be connected to a remote socket. The |
|
670 optional *flags* argument has the same meaning as for :meth:`recv` above. |
|
671 Returns the number of bytes sent. Applications are responsible for checking that |
|
672 all data has been sent; if only some of the data was transmitted, the |
|
673 application needs to attempt delivery of the remaining data. |
|
674 |
|
675 |
|
676 .. method:: socket.sendall(string[, flags]) |
|
677 |
|
678 Send data to the socket. The socket must be connected to a remote socket. The |
|
679 optional *flags* argument has the same meaning as for :meth:`recv` above. |
|
680 Unlike :meth:`send`, this method continues to send data from *string* until |
|
681 either all data has been sent or an error occurs. ``None`` is returned on |
|
682 success. On error, an exception is raised, and there is no way to determine how |
|
683 much data, if any, was successfully sent. |
|
684 |
|
685 |
|
686 .. method:: socket.sendto(string[, flags], address) |
|
687 |
|
688 Send data to the socket. The socket should not be connected to a remote socket, |
|
689 since the destination socket is specified by *address*. The optional *flags* |
|
690 argument has the same meaning as for :meth:`recv` above. Return the number of |
|
691 bytes sent. (The format of *address* depends on the address family --- see |
|
692 above.) |
|
693 |
|
694 |
|
695 .. method:: socket.setblocking(flag) |
|
696 |
|
697 Set blocking or non-blocking mode of the socket: if *flag* is 0, the socket is |
|
698 set to non-blocking, else to blocking mode. Initially all sockets are in |
|
699 blocking mode. In non-blocking mode, if a :meth:`recv` call doesn't find any |
|
700 data, or if a :meth:`send` call can't immediately dispose of the data, a |
|
701 :exc:`error` exception is raised; in blocking mode, the calls block until they |
|
702 can proceed. ``s.setblocking(0)`` is equivalent to ``s.settimeout(0)``; |
|
703 ``s.setblocking(1)`` is equivalent to ``s.settimeout(None)``. |
|
704 |
|
705 |
|
706 .. method:: socket.settimeout(value) |
|
707 |
|
708 Set a timeout on blocking socket operations. The *value* argument can be a |
|
709 nonnegative float expressing seconds, or ``None``. If a float is given, |
|
710 subsequent socket operations will raise an :exc:`timeout` exception if the |
|
711 timeout period *value* has elapsed before the operation has completed. Setting |
|
712 a timeout of ``None`` disables timeouts on socket operations. |
|
713 ``s.settimeout(0.0)`` is equivalent to ``s.setblocking(0)``; |
|
714 ``s.settimeout(None)`` is equivalent to ``s.setblocking(1)``. |
|
715 |
|
716 .. versionadded:: 2.3 |
|
717 |
|
718 |
|
719 .. method:: socket.gettimeout() |
|
720 |
|
721 Return the timeout in floating seconds associated with socket operations, or |
|
722 ``None`` if no timeout is set. This reflects the last call to |
|
723 :meth:`setblocking` or :meth:`settimeout`. |
|
724 |
|
725 .. versionadded:: 2.3 |
|
726 |
|
727 Some notes on socket blocking and timeouts: A socket object can be in one of |
|
728 three modes: blocking, non-blocking, or timeout. Sockets are always created in |
|
729 blocking mode. In blocking mode, operations block until complete. In |
|
730 non-blocking mode, operations fail (with an error that is unfortunately |
|
731 system-dependent) if they cannot be completed immediately. In timeout mode, |
|
732 operations fail if they cannot be completed within the timeout specified for the |
|
733 socket. The :meth:`setblocking` method is simply a shorthand for certain |
|
734 :meth:`settimeout` calls. |
|
735 |
|
736 Timeout mode internally sets the socket in non-blocking mode. The blocking and |
|
737 timeout modes are shared between file descriptors and socket objects that refer |
|
738 to the same network endpoint. A consequence of this is that file objects |
|
739 returned by the :meth:`makefile` method must only be used when the socket is in |
|
740 blocking mode; in timeout or non-blocking mode file operations that cannot be |
|
741 completed immediately will fail. |
|
742 |
|
743 Note that the :meth:`connect` operation is subject to the timeout setting, and |
|
744 in general it is recommended to call :meth:`settimeout` before calling |
|
745 :meth:`connect`. |
|
746 |
|
747 |
|
748 .. method:: socket.setsockopt(level, optname, value) |
|
749 |
|
750 .. index:: module: struct |
|
751 |
|
752 Set the value of the given socket option (see the Unix manual page |
|
753 :manpage:`setsockopt(2)`). The needed symbolic constants are defined in the |
|
754 :mod:`socket` module (:const:`SO_\*` etc.). The value can be an integer or a |
|
755 string representing a buffer. In the latter case it is up to the caller to |
|
756 ensure that the string contains the proper bits (see the optional built-in |
|
757 module :mod:`struct` for a way to encode C structures as strings). |
|
758 |
|
759 |
|
760 .. method:: socket.shutdown(how) |
|
761 |
|
762 Shut down one or both halves of the connection. If *how* is :const:`SHUT_RD`, |
|
763 further receives are disallowed. If *how* is :const:`SHUT_WR`, further sends |
|
764 are disallowed. If *how* is :const:`SHUT_RDWR`, further sends and receives are |
|
765 disallowed. |
|
766 |
|
767 Note that there are no methods :meth:`read` or :meth:`write`; use :meth:`recv` |
|
768 and :meth:`send` without *flags* argument instead. |
|
769 |
|
770 Socket objects also have these (read-only) attributes that correspond to the |
|
771 values given to the :class:`socket` constructor. |
|
772 |
|
773 |
|
774 .. attribute:: socket.family |
|
775 |
|
776 The socket family. |
|
777 |
|
778 .. versionadded:: 2.5 |
|
779 |
|
780 |
|
781 .. attribute:: socket.type |
|
782 |
|
783 The socket type. |
|
784 |
|
785 .. versionadded:: 2.5 |
|
786 |
|
787 |
|
788 .. attribute:: socket.proto |
|
789 |
|
790 The socket protocol. |
|
791 |
|
792 .. versionadded:: 2.5 |
|
793 |
|
794 |
|
795 .. _socket-example: |
|
796 |
|
797 Example |
|
798 ------- |
|
799 |
|
800 Here are four minimal example programs using the TCP/IP protocol: a server that |
|
801 echoes all data that it receives back (servicing only one client), and a client |
|
802 using it. Note that a server must perform the sequence :func:`socket`, |
|
803 :meth:`bind`, :meth:`listen`, :meth:`accept` (possibly repeating the |
|
804 :meth:`accept` to service more than one client), while a client only needs the |
|
805 sequence :func:`socket`, :meth:`connect`. Also note that the server does not |
|
806 :meth:`send`/:meth:`recv` on the socket it is listening on but on the new |
|
807 socket returned by :meth:`accept`. |
|
808 |
|
809 The first two examples support IPv4 only. :: |
|
810 |
|
811 # Echo server program |
|
812 import socket |
|
813 |
|
814 HOST = '' # Symbolic name meaning all available interfaces |
|
815 PORT = 50007 # Arbitrary non-privileged port |
|
816 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
817 s.bind((HOST, PORT)) |
|
818 s.listen(1) |
|
819 conn, addr = s.accept() |
|
820 print 'Connected by', addr |
|
821 while 1: |
|
822 data = conn.recv(1024) |
|
823 if not data: break |
|
824 conn.send(data) |
|
825 conn.close() |
|
826 |
|
827 :: |
|
828 |
|
829 # Echo client program |
|
830 import socket |
|
831 |
|
832 HOST = 'daring.cwi.nl' # The remote host |
|
833 PORT = 50007 # The same port as used by the server |
|
834 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
|
835 s.connect((HOST, PORT)) |
|
836 s.send('Hello, world') |
|
837 data = s.recv(1024) |
|
838 s.close() |
|
839 print 'Received', repr(data) |
|
840 |
|
841 The next two examples are identical to the above two, but support both IPv4 and |
|
842 IPv6. The server side will listen to the first address family available (it |
|
843 should listen to both instead). On most of IPv6-ready systems, IPv6 will take |
|
844 precedence and the server may not accept IPv4 traffic. The client side will try |
|
845 to connect to the all addresses returned as a result of the name resolution, and |
|
846 sends traffic to the first one connected successfully. :: |
|
847 |
|
848 # Echo server program |
|
849 import socket |
|
850 import sys |
|
851 |
|
852 HOST = None # Symbolic name meaning all available interfaces |
|
853 PORT = 50007 # Arbitrary non-privileged port |
|
854 s = None |
|
855 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): |
|
856 af, socktype, proto, canonname, sa = res |
|
857 try: |
|
858 s = socket.socket(af, socktype, proto) |
|
859 except socket.error, msg: |
|
860 s = None |
|
861 continue |
|
862 try: |
|
863 s.bind(sa) |
|
864 s.listen(1) |
|
865 except socket.error, msg: |
|
866 s.close() |
|
867 s = None |
|
868 continue |
|
869 break |
|
870 if s is None: |
|
871 print 'could not open socket' |
|
872 sys.exit(1) |
|
873 conn, addr = s.accept() |
|
874 print 'Connected by', addr |
|
875 while 1: |
|
876 data = conn.recv(1024) |
|
877 if not data: break |
|
878 conn.send(data) |
|
879 conn.close() |
|
880 |
|
881 :: |
|
882 |
|
883 # Echo client program |
|
884 import socket |
|
885 import sys |
|
886 |
|
887 HOST = 'daring.cwi.nl' # The remote host |
|
888 PORT = 50007 # The same port as used by the server |
|
889 s = None |
|
890 for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM): |
|
891 af, socktype, proto, canonname, sa = res |
|
892 try: |
|
893 s = socket.socket(af, socktype, proto) |
|
894 except socket.error, msg: |
|
895 s = None |
|
896 continue |
|
897 try: |
|
898 s.connect(sa) |
|
899 except socket.error, msg: |
|
900 s.close() |
|
901 s = None |
|
902 continue |
|
903 break |
|
904 if s is None: |
|
905 print 'could not open socket' |
|
906 sys.exit(1) |
|
907 s.send('Hello, world') |
|
908 data = s.recv(1024) |
|
909 s.close() |
|
910 print 'Received', repr(data) |
|
911 |
|
912 |
|
913 The last example shows how to write a very simple network sniffer with raw |
|
914 sockets on Windows. The example requires administrator privileges to modify |
|
915 the interface:: |
|
916 |
|
917 import socket |
|
918 |
|
919 # the public network interface |
|
920 HOST = socket.gethostbyname(socket.gethostname()) |
|
921 |
|
922 # create a raw socket and bind it to the public interface |
|
923 s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP) |
|
924 s.bind((HOST, 0)) |
|
925 |
|
926 # Include IP headers |
|
927 s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) |
|
928 |
|
929 # receive all packages |
|
930 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) |
|
931 |
|
932 # receive a package |
|
933 print s.recvfrom(65565) |
|
934 |
|
935 # disabled promiscuous mode |
|
936 s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF) |