11.2.2.2 回送客户
与服务器不同,客户程序采用另外一种方式建立socket。它不是绑定到一个端口并监听,而是使用connect()将套接字直接关联到远程地址。
import socket
import sys
# Create a TCP/IP socket.
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# Connect the socket to the port where the server is listening.
server_address = ('localhost',10000)
print('connecting to {} port {}'.format(*server_address))
sock.connect(server_address)
try:
# Send data.
message = b'This is the message. It will be repeated.'
print('sending {!r}'.format(message))
sock.sendall(message)
# Look for the response.
amount_received = 0
amount_expected = len(message)
while amount_received < amount_expected:
data = sock.recv(16)
amount_received += len(data)
print('received {!r}'.format(data))
finally:
print('closing socket')
sock.close()
建立连接之后,可以通过socket利用sendall()发送数据,并用recv()接收数据,这与、服务器中是一样的。发送整个消息并接收到一个副本时,套接字会被关闭以释放端口。
11.2.2.3 客户与服务器
要在不同的终端窗口运行客户和服务器,使它们能够相互通信。服务器输出显示了入站连接和数据,以及发回给客户的响应。
运行结果: