class ServerThread(threading.Thread): def __init__(self, server): super(ServerThread, self).__init__() self.server = server self.sock = None self.running = False self.sock = socket.socket() self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.bind((self.server.host, self.server.port)) self.connections = weakref.WeakSet() self.match_manager = MatchManager() def run(self): self.running = True try: self.sock.listen(1) while self.running: conn, addr = self.sock.accept() client_thread = ClientThread(conn, addr, self) client_thread.setDaemon(True) client_thread.start() self.connections.add(conn) except OSError as msg: print msg except socket.error: pass for conn in self.connections: conn.close() self.sock.close() print "Server Stopped" def shutdown(self): self.running = False self.sock.shutdown(socket.SHUT_RDWR) self.join() self.match_manager.close()
def __init__(self, server): super(ServerThread, self).__init__() self.server = server self.sock = None self.running = False self.sock = socket.socket() self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.sock.bind((self.server.host, self.server.port)) self.connections = weakref.WeakSet() self.match_manager = MatchManager()