mirror of https://github.com/python/cpython
Merged revisions 87653-87655 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r87653 | antoine.pitrou | 2011-01-02 23:06:53 +0100 (dim., 02 janv. 2011) | 3 lines Clarify behaviour of close() and shutdown() on sockets. ........ r87654 | antoine.pitrou | 2011-01-02 23:09:27 +0100 (dim., 02 janv. 2011) | 3 lines Add a shutdown() call in the server example. ........ r87655 | antoine.pitrou | 2011-01-02 23:12:22 +0100 (dim., 02 janv. 2011) | 3 lines Some nits. ........
This commit is contained in:
parent
cb40277ea4
commit
9e7d6e598c
|
@ -515,6 +515,9 @@ The module :mod:`socket` exports the following constants and functions:
|
||||||
Module :mod:`SocketServer`
|
Module :mod:`SocketServer`
|
||||||
Classes that simplify writing network servers.
|
Classes that simplify writing network servers.
|
||||||
|
|
||||||
|
Module :mod:`ssl`
|
||||||
|
A TLS/SSL wrapper for socket objects.
|
||||||
|
|
||||||
|
|
||||||
.. _socket-objects:
|
.. _socket-objects:
|
||||||
|
|
||||||
|
@ -551,6 +554,12 @@ correspond to Unix system calls applicable to sockets.
|
||||||
remote end will receive no more data (after queued data is flushed). Sockets are
|
remote end will receive no more data (after queued data is flushed). Sockets are
|
||||||
automatically closed when they are garbage-collected.
|
automatically closed when they are garbage-collected.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
:meth:`close()` releases the resource associated with a connection but
|
||||||
|
does not necessarily close the connection immediately. If you want
|
||||||
|
to close the connection in a timely fashion, call :meth:`shutdown()`
|
||||||
|
before :meth:`close()`.
|
||||||
|
|
||||||
|
|
||||||
.. method:: socket.connect(address)
|
.. method:: socket.connect(address)
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
:mod:`ssl` --- SSL wrapper for socket objects
|
:mod:`ssl` --- TLS/SSL wrapper for socket objects
|
||||||
=============================================
|
=================================================
|
||||||
|
|
||||||
.. module:: ssl
|
.. module:: ssl
|
||||||
:synopsis: SSL wrapper for socket objects
|
:synopsis: TLS/SSL wrapper for socket objects
|
||||||
|
|
||||||
.. moduleauthor:: Bill Janssen <bill.janssen@gmail.com>
|
.. moduleauthor:: Bill Janssen <bill.janssen@gmail.com>
|
||||||
|
|
||||||
|
@ -582,13 +582,17 @@ the other end, and use :func:`wrap_socket` to create a server-side SSL context
|
||||||
for it::
|
for it::
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
newsocket, fromaddr = bindsocket.accept()
|
newsocket, fromaddr = bindsocket.accept()
|
||||||
connstream = ssl.wrap_socket(newsocket,
|
connstream = ssl.wrap_socket(newsocket,
|
||||||
server_side=True,
|
server_side=True,
|
||||||
certfile="mycertfile",
|
certfile="mycertfile",
|
||||||
keyfile="mykeyfile",
|
keyfile="mykeyfile",
|
||||||
ssl_version=ssl.PROTOCOL_TLSv1)
|
ssl_version=ssl.PROTOCOL_TLSv1)
|
||||||
deal_with_client(connstream)
|
try:
|
||||||
|
deal_with_client(connstream)
|
||||||
|
finally:
|
||||||
|
connstream.shutdown(socket.SHUT_RDWR)
|
||||||
|
connstream.close()
|
||||||
|
|
||||||
Then you'd read data from the ``connstream`` and do something with it till you
|
Then you'd read data from the ``connstream`` and do something with it till you
|
||||||
are finished with the client (or the client is finished with you)::
|
are finished with the client (or the client is finished with you)::
|
||||||
|
@ -604,7 +608,6 @@ are finished with the client (or the client is finished with you)::
|
||||||
break
|
break
|
||||||
data = connstream.read()
|
data = connstream.read()
|
||||||
# finished with client
|
# finished with client
|
||||||
connstream.close()
|
|
||||||
|
|
||||||
And go back to listening for new client connections.
|
And go back to listening for new client connections.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue