ImportThreading fromSocketserverImportThreadingtcpserver,baserequesthandlerImportSYSImportLoggingformat='% (asctime) s% (threadname) d% (thread) d% (message) s'Logging.basicconfig ( level=logging.info,format=FORMAT)classChathandler (Baserequesthandler):#One to one, equivalent to the receive functionClients = {} defSetup (self): self.event=Threading. Event () self.clients[self.client_address]=self.requestdefFinish (self): Self.clients.pop (self.client_address) self.event.set ()defhandle (self):Print(self.request)#New_socket used to recv while notSelf.event.is_set (): Data= SELF.REQUEST.RECV (1024) Print(data,self.client_address) msg='{}.ack'. Format (data). Encode ()#How to implement a one-to-many, more where, how to get forCinchself.clients.values (): C.send (msg) Addr= ('0.0.0.0', 9999) Server= Threadingtcpserver (Addr,chathandler)#equivalent to TCP total socketPrint(server) T= Threading. Thread (target=server.serve_forever,name='Chatserver') T.start ()Try: whileTrue:cmd= Input (">>>") ifCmd.strip () = ='quit': BreakexceptException as E:Print(e)exceptKeyboardinterrupt:Passfinally: Print('Exit') sys.exit (0)
The socketserver of Python