Merge assorted fixes from 3.2

This commit is contained in:
Antoine Pitrou 2011-12-05 01:47:40 +01:00
commit 3731142e19

View file

@ -62,9 +62,8 @@ your browser did something like the following::
# create an INET, STREAMing socket # create an INET, STREAMing socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#now connect to the web server on port 80 # now connect to the web server on port 80 - the normal http port
# - the normal http port s.connect(("www.python.org", 80))
s.connect(("www.mcmillan-inc.com", 80))
When the ``connect`` completes, the socket ``s`` can be used to send When the ``connect`` completes, the socket ``s`` can be used to send
in a request for the text of the page. The same socket will read the in a request for the text of the page. The same socket will read the
@ -76,10 +75,8 @@ What happens in the web server is a bit more complex. First, the web server
creates a "server socket":: creates a "server socket"::
# create an INET, STREAMing socket # create an INET, STREAMing socket
serversocket = socket.socket( serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.AF_INET, socket.SOCK_STREAM) # bind the socket to a public host, and a well-known port
#bind the socket to a public host,
# and a well-known port
serversocket.bind((socket.gethostname(), 80)) serversocket.bind((socket.gethostname(), 80))
# become a server socket # become a server socket
serversocket.listen(5) serversocket.listen(5)
@ -126,12 +123,13 @@ IPC
--- ---
If you need fast IPC between two processes on one machine, you should look into If you need fast IPC between two processes on one machine, you should look into
whatever form of shared memory the platform offers. A simple protocol based pipes or shared memory. If you do decide to use AF_INET sockets, bind the
around shared memory and locks or semaphores is by far the fastest technique. "server" socket to ``'localhost'``. On most platforms, this will take a
shortcut around a couple of layers of network code and be quite a bit faster.
If you do decide to use sockets, bind the "server" socket to ``'localhost'``. On .. seealso::
most platforms, this will take a shortcut around a couple of layers of network The :mod:`multiprocessing` integrates cross-platform IPC into a higher-level
code and be quite a bit faster. API.
Using a Socket Using a Socket
@ -300,7 +298,7 @@ When Sockets Die
Probably the worst thing about using blocking sockets is what happens when the Probably the worst thing about using blocking sockets is what happens when the
other side comes down hard (without doing a ``close``). Your socket is likely to other side comes down hard (without doing a ``close``). Your socket is likely to
hang. SOCKSTREAM is a reliable protocol, and it will wait a long, long time hang. TCP is a reliable protocol, and it will wait a long, long time
before giving up on a connection. If you're using threads, the entire thread is before giving up on a connection. If you're using threads, the entire thread is
essentially dead. There's not much you can do about it. As long as you aren't essentially dead. There's not much you can do about it. As long as you aren't
doing something dumb, like holding a lock while doing a blocking read, the doing something dumb, like holding a lock while doing a blocking read, the