SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端。即: 每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进 程” 专门负责处理当前客户端的所有请求。
1.ThreadingTCPServer -----------(for threading)
ThreadingTCPServer实现的socket服务器内部会为每个client创建一个"线程",该线程用来和客户端进行交互
import socketserver class MyTCPHander(socketserver.BaseRequestHandler): def handle(self): while True: try: self.data = self.request.recv(1024).strip() print("{} wrote:".format(self.client_address[0])) print(self.data) self.request.sendall(self.data.upper()) except ConnectionResetError as e: print("err", e) break if __name__ == "__main__": HOST, PORT = "localhost", 9999 #MyTCPHander就是我们自己写的tcp处理函数,就是一个线程 server = socketserver.ThreadingTCPServer((HOST,PORT),MyTCPHander) server.serve_forever()其中,创建的类除了继承自socketserver.BaseRequestHandler外,类中必须定义一个名称为handler的方法