mirror of https://github.com/python/cpython.git
merged from 3.2
Issue #6005: Examples in the socket library documentation use sendall, where relevant, instead send method.
This commit is contained in:
commit
0bfa963fbb
|
@ -1,3 +1,5 @@
|
|||
.. _socket-howto:
|
||||
|
||||
****************************
|
||||
Socket Programming HOWTO
|
||||
****************************
|
||||
|
|
|
@ -981,7 +981,8 @@ correspond to Unix system calls applicable to sockets.
|
|||
optional *flags* argument has the same meaning as for :meth:`recv` above.
|
||||
Returns the number of bytes sent. Applications are responsible for checking that
|
||||
all data has been sent; if only some of the data was transmitted, the
|
||||
application needs to attempt delivery of the remaining data.
|
||||
application needs to attempt delivery of the remaining data. For further
|
||||
information on this topic, consult the :ref:`socket-howto`.
|
||||
|
||||
|
||||
.. method:: socket.sendall(bytes[, flags])
|
||||
|
@ -1169,8 +1170,8 @@ using it. Note that a server must perform the sequence :func:`socket`,
|
|||
:meth:`~socket.bind`, :meth:`~socket.listen`, :meth:`~socket.accept` (possibly
|
||||
repeating the :meth:`~socket.accept` to service more than one client), while a
|
||||
client only needs the sequence :func:`socket`, :meth:`~socket.connect`. Also
|
||||
note that the server does not :meth:`~socket.send`/:meth:`~socket.recv` on the
|
||||
socket it is listening on but on the new socket returned by
|
||||
note that the server does not :meth:`~socket.sendall`/:meth:`~socket.recv` on
|
||||
the socket it is listening on but on the new socket returned by
|
||||
:meth:`~socket.accept`.
|
||||
|
||||
The first two examples support IPv4 only. ::
|
||||
|
@ -1188,7 +1189,7 @@ The first two examples support IPv4 only. ::
|
|||
while True:
|
||||
data = conn.recv(1024)
|
||||
if not data: break
|
||||
conn.send(data)
|
||||
conn.sendall(data)
|
||||
conn.close()
|
||||
|
||||
::
|
||||
|
@ -1200,7 +1201,7 @@ The first two examples support IPv4 only. ::
|
|||
PORT = 50007 # The same port as used by the server
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.connect((HOST, PORT))
|
||||
s.send(b'Hello, world')
|
||||
s.sendall(b'Hello, world')
|
||||
data = s.recv(1024)
|
||||
s.close()
|
||||
print('Received', repr(data))
|
||||
|
@ -1272,7 +1273,7 @@ sends traffic to the first one connected successfully. ::
|
|||
if s is None:
|
||||
print('could not open socket')
|
||||
sys.exit(1)
|
||||
s.send(b'Hello, world')
|
||||
s.sendall(b'Hello, world')
|
||||
data = s.recv(1024)
|
||||
s.close()
|
||||
print('Received', repr(data))
|
||||
|
|
|
@ -365,7 +365,7 @@ This is the server side::
|
|||
print("{} wrote:".format(self.client_address[0]))
|
||||
print(self.data)
|
||||
# just send back the same data, but upper-cased
|
||||
self.request.send(self.data.upper())
|
||||
self.request.sendall(self.data.upper())
|
||||
|
||||
if __name__ == "__main__":
|
||||
HOST, PORT = "localhost", 9999
|
||||
|
@ -395,7 +395,7 @@ objects that simplify communication by providing the standard file interface)::
|
|||
The difference is that the ``readline()`` call in the second handler will call
|
||||
``recv()`` multiple times until it encounters a newline character, while the
|
||||
single ``recv()`` call in the first handler will just return what has been sent
|
||||
from the client in one ``send()`` call.
|
||||
from the client in one ``sendall()`` call.
|
||||
|
||||
|
||||
This is the client side::
|
||||
|
@ -412,7 +412,7 @@ This is the client side::
|
|||
try:
|
||||
# Connect to server and send data
|
||||
sock.connect((HOST, PORT))
|
||||
sock.send(bytes(data + "\n", "utf-8"))
|
||||
sock.sendall(bytes(data + "\n", "utf-8"))
|
||||
|
||||
# Receive data from the server and shut down
|
||||
received = str(sock.recv(1024), "utf-8")
|
||||
|
@ -510,7 +510,7 @@ An example for the :class:`ThreadingMixIn` class::
|
|||
data = str(self.request.recv(1024), 'ascii')
|
||||
cur_thread = threading.current_thread()
|
||||
response = bytes("{}: {}".format(cur_thread.name, data), 'ascii')
|
||||
self.request.send(response)
|
||||
self.request.sendall(response)
|
||||
|
||||
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
|
||||
pass
|
||||
|
@ -519,7 +519,7 @@ An example for the :class:`ThreadingMixIn` class::
|
|||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
sock.connect((ip, port))
|
||||
try:
|
||||
sock.send(bytes(message, 'ascii'))
|
||||
sock.sendall(bytes(message, 'ascii'))
|
||||
response = str(sock.recv(1024), 'ascii')
|
||||
print("Received: {}".format(response))
|
||||
finally:
|
||||
|
|
|
@ -484,6 +484,9 @@ Library
|
|||
make sure two listeners can't bind to the same socket/pipe (or any existing
|
||||
socket/pipe).
|
||||
|
||||
- Issue #6005: Examples in the socket library documentation use sendall, where
|
||||
relevant, instead send method.
|
||||
|
||||
- Issue #10811: Fix recursive usage of cursors. Instead of crashing,
|
||||
raise a ProgrammingError now.
|
||||
|
||||
|
|
Loading…
Reference in New Issue