socketserver實現併發
阿新 • • 發佈:2018-11-26
一、socketserver
基於tcp,使用socketserver,可以實現一個服務端與多個客戶端通訊。
- 基於tcp的套接字,關鍵就是兩個迴圈,一個連結迴圈,一個通訊迴圈
- socketserver模組中分為兩大類:server類(解決連結問題)和request類(解決通訊問題)
完整的socketserver程式碼示例:
服務端:
import socketserver class Myserver(socketserver.BaseRequestHandler): def handle(self):server端while 1: from_client_msg = self.request.recv(1024) print(from_client_msg.decode("utf-8")) server_msg = input("服務端>>>") self.request.send(server_msg.encode("utf-8")) if __name__ == '__main__': ip_port = ("127.0.0.1", 8001) server = socketserver.ThreadingTCPServer(ip_port, Myserver) server.serve_forever()
客戶端:
import socket client = socket.socket() client.connect(("127.0.0.1", 8001)) while 1: client_data = input("客戶端>>>") client.send(client_data.encode("utf-8")) from_server_msg = client.recv(1024) print(from_server_msg.decode("utf-8"))client端
此時即可在一個服務端下,執行多次客戶端程式,實現同時與服務端通訊。
二、socketserver原始碼分析