作者:鸟鸟212 | 来源:互联网 | 2023-09-17 17:48
SocketServer内部使用 IO多路复用 以及 “多线程” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端。即: 每个客户端请求连接到服务器时,Socket服务端都会在服务器是创建一个“线程”或者“进 程” 专门负责处理当前客户端的所有请求。
1.ThreadingTCPServer -----------(for threading)
ThreadingTCPServer实现的socket服务器内部会为每个client创建一个"线程",该线程用来和客户端进行交互
import socketserverclass 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的方法