
574
|
第 17 章 網路基礎
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.connect(('localhost', 8881))
print('Connected to server')
data = u"""A few lines of text
including non-ASCII characters: € £
to test the operation
of both server
and client."""
for line in data.splitlines():
sock.sendall(line.encode('utf-8'))
print('Sent:', line)
response = sock.recv(1024)
print('Recv:', response.decode('utf-8'))
print('Disconnected from server')
請注意,這裡的資料是文字,所以必須以合適的表示法(representation)
編碼,為此我們選擇常用的 UTF-8。伺服器處理的是位元組(因為跨越
網路傳送的是位元組,也就是 octets);所接收的位元組物件會在列印前
以 UTF-8 解碼回 Unicode 文字。任何合適的編解碼方式(codec)都可
以使用:重點在於文字在傳送前必須經過編碼,而在接收後解碼。處理
位元組的伺服器甚至不需要知道所用的編碼是什麼 ...