建立 TCP 伺服器
你可以使用 socketserver
庫建立 TCP 伺服器。這是一個簡單的 echo 伺服器。
伺服器端
from sockerserver import BaseRequestHandler, TCPServer
class EchoHandler(BaseRequestHandler):
def handle(self):
print('connection from:', self.client_address)
while True:
msg = self.request.recv(8192)
if not msg:
break
self.request.send(msg)
if __name__ == '__main__':
server = TCPServer(('', 5000), EchoHandler)
server.serve_forever()
客戶端
from socket import socket, AF_INET, SOCK_STREAM
sock = socket(AF_INET, SOCK_STREAM)
sock.connect(('localhost', 5000))
sock.send(b'Monty Python')
sock.recv(8192) # returns b'Monty Python'
socketserver
使建立簡單的 TCP 伺服器變得相對容易。但是,你應該知道,預設情況下,伺服器是單執行緒的,並且一次只能為一個客戶端服務。如果要處理多個客戶端,請例項化 ThreadingTCPServer
。
from socketserver import ThreadingTCPServer
...
if __name__ == '__main__':
server = ThreadingTCPServer(('', 5000), EchoHandler)
server.serve_forever()