python3.6入门到高阶(全栈) day29 socketserver实现服务端和多个客户端通信
什么是socketserver?
TCP协议下的socket实现了服务端一次只能和一个客户端进行通信, 而socketserver实现了服务端一次能和多个客户端进行通信, 底层调用的还是socket.
import socketserver class MyServer(socketserver.BaseRequestHandler): # self.request 相当于创建一个通信通道 conn """ 继承BaseRequestHandler, 实例化类时要执行 def __init__(self, request, client_address, server): self.request = request self.client_address = client_address self.server = server self.setup() try: self.handle() finally: self.finish() """ def handle(self): # 方法名字必须是 handle, 得和源码一样, 不能变 while 1: print(str(self.request.recv(1024),"utf8")) self.request.send(bytes(input("服务端发送信息>>>>>"),"utf8")) if __name__ == "__main__" : ip_port = ("127.0.0.1", 8900) # 实例化一个socket对象,并封装了IP和端口,以及自己定义的类. 这一步完成了server对象两个内容: bind IP和端口, listen 排队的数量 server = socketserver.ThreadingTCPServer(ip_port,MyServer) # 调用serve_forever方法, 建立通信通道, 源码(request, client_address = self.get_request(), self.get_request方法就是 # server对象 accept() 的过程, ) 在这一步开启多线程应对并发, 并进入处理通信部分, 实例化 Myserver类, 并执行handle方法(看源码) server.serve_forever()