This module provides access to the BSD socket interface. It is available on all modern Unix systems, Windows, MacOS, BeOS, OS/2, and probably additional platforms.
For an introduction to socket programming (in C), see the following papers: An Introductory 4.3BSD Interprocess Communication Tutorial, by Stuart Sechrest and An Advanced 4.3BSD Interprocess Communication Tutorial, by Samuel J. Leffler et al, both in the Unix Programmer's Manual, Supplementary Documents 1 (sections PS1:7 and PS1:8). The platform-specific reference material for the various socket-related system calls are also a valuable source of information on the details of socket semantics. For Unix, refer to the manual pages; for Windows, see the WinSock (or Winsock 2) specification.
The Python interface is a straightforward transliteration of the Unix system call and library interface for sockets to Python's object-oriented style: the socket() function returns a socket object whose methods implement the various socket system calls. Parameter types are somewhat higher-level than in the C interface: as with read() and write() operations on Python files, buffer allocation on receive operations is automatic, and buffer length is implicit on send operations.
Socket addresses are represented as a single string for the
AF_UNIX address family and as a pair
(host, port)
for the AF_INET address
family, where host is a string representing
either a hostname in Internet domain notation like
'daring.cwi.nl'
or an IP address like '100.50.200.5'
,
and port is an integral port number. Other address families are
currently not supported. The address format required by a particular
socket object is automatically selected based on the address family
specified when the socket object was created.
For IP addresses, two special forms are accepted instead of a host
address: the empty string represents INADDR_ANY, and the string
'<broadcast>'
represents INADDR_BROADCAST.
All errors raise exceptions. The normal exceptions for invalid argument types and out-of-memory conditions can be raised; errors related to socket or address semantics raise the error socket.error.
Non-blocking mode is supported through the setblocking() method.
The module socket exports the following constants and functions:
(errno, string)
representing an error returned by a system
call, similar to the value accompanying os.error.
See the module errno, which contains
names for the error codes defined by the underlying operating system.
'100.50.200.5'
. If the host name
is an IP address itself it is returned unchanged. See
gethostbyname_ex() for a more complete interface.
(hostname, aliaslist, ipaddrlist)
where
hostname
is the primary host name responding to the given
ip_address, aliaslist
is a (possibly empty) list of
alternative host names for the same address, and ipaddrlist
is
a list of IP addresses for the same interface on the same
host (often but not always a single address).
gethostbyname(gethostname())
.
Note: gethostname() doesn't always return the fully qualified
domain name; use gethostbyaddr(gethostname())
(see below).
(hostname, aliaslist,
ipaddrlist)
where hostname is the primary host name
responding to the given ip_address, aliaslist is a
(possibly empty) list of alternative host names for the same address,
and ipaddrlist is a list of IP addresses for the same interface
on the same host (most likely containing only a single address).
To find the fully qualified domain name, check hostname and the
items of aliaslist for an entry containing at least one period.
'icmp'
) to a constant
suitable for passing as the (optional) third argument to the
socket() function. This is usually only needed for sockets
opened in ``raw'' mode (SOCK_RAW); for the normal socket
modes, the correct protocol is chosen automatically if the protocol is
omitted or zero.
'tcp'
or
'udp'
.
type(socket(...))
.