Example #1
0
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()
Example #2
0
    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()