標籤:add for base pre oar value rip star _for
import threadingfrom socketserver import ThreadingTCPServer,BaseRequestHandlerimport sysimport loggingFORMAT = ‘%(asctime)s %(threadName)d %(thread)d %(message)s‘logging.basicConfig(level=logging.INFO,format=FORMAT)class ChatHandler(BaseRequestHandler): #一對一,相當於receive函數 clients = {} def setup(self): self.event = threading.Event() self.clients[self.client_address] = self.request def finish(self): self.clients.pop(self.client_address) self.event.set() def handle(self): print(self.request) #new_socket 用來recv while not self.event.is_set(): data = self.request.recv(1024) print(data,self.client_address) msg = ‘{}.ack‘.format(data).encode() #如何?一對多,多在哪裡,如何獲得 for c in self.clients.values(): c.send(msg)addr = (‘0.0.0.0‘,9999)server = ThreadingTCPServer(addr,ChatHandler) #相當於tcp總的socketprint(server)t = threading.Thread(target=server.serve_forever,name=‘chatserver‘)t.start()try: while True: cmd = input(">>>") if cmd.strip() == ‘quit‘: breakexcept Exception as e: print(e)except KeyboardInterrupt: passfinally: print(‘exit‘) sys.exit(0)
Python之socketserver